2013-01-04 9 views
27

sto usando guard-rail per eseguire il mio server rotaie, il mio problema è che non posso accedere al REPL quando aggiungo binding.pry ottengo sologuard-rail non fornendo REPL per binding.pry

From: /home/martinr/code/app/controllers/tools_controller.rb @ line 2 ToolsController#index: 

    2: def index 
=> 3: binding.pry 
    4: @end_date = Date.today.to_s 
    5: @start_date = Date.today.months_ago(3).to_s 
    7: end 

[1] pry(#<ToolsController>)> 

Nessun REPL, come faccio a fare leva con i guard rail?

Il mio file Gemfile assomiglia a questo

group :development, :test do 
    gem 'pry-rails' # for better console debugging 
    gem 'pry-debugger' 
    gem 'rb-inotify' 
    gem 'sqlite3' 
end 

mio Guardfile:

guard 'rails', :debugger => true do 
    watch('Gemfile.lock') 
    watch(%r{^(config|lib)/.*}) 
end 
+0

Cosa intendi? Non puoi digitare nulla o cosa? – kyrylo

+1

Voglio dire che sembra caricare il REPL e continuare semplicemente con l'esecuzione dei programmi. Non ti dà la possibilità di interagire con il REPL. – Martinffx

+0

Ci sono novità su questo? Sarebbe davvero bello farlo funzionare. –

risposta

3

sto cercando una cosa simile, e, inoltre, non può farlo funzionare. Il problema sembra che la lettura da stdin non blocchi, quindi Pry non blocca. Qualsiasi lettura da STDIN ritorna immediatamente.

rspec -X console.rb 

File segue:

require 'spec_helper' 

describe 'console' do 
    it 'opens!' do 
    Pry.config.input = STDIN 
    Pry.config.output = STDOUT 
    puts STDIN.closed? # returns false 
    binding.pry # returns right away, does not block 
    gets # returns right way, does not block 
    end 
end 
4

ho creato il mio ambiente rotaie con custode e Spork e trovo che il legame-leva agisce stranamente con la guardia. Se inserisco binding.pry nel codice e quindi la protezione riavvia i miei test, non c'è alcun debug interattivo. Ma se esco e riparto di nuovo, funziona e si interrompe correttamente in modalità interattiva.

Tuttavia ... se si rimuove la linea binding.pry, la guardia eseguirà nuovamente i test come previsto, ma si interromperà dove si trovava la linea di collegamento, anche se non è più presente.

Sembra che si debba riavviare la protezione ogni volta che si inserisce o si rimuove il legame della leva.

Irritante ma ancora meglio che non avere accesso a curiosare nei test.