Я использую жемчужину Pry в моей консоли Rails, но приправленная ароматная рельсовая консоль, похоже, потеряла перезагрузку! метод перезагрузки моделей и прочее.
Вот как я запускаю консоль pry
c:\rails\app> pry -r ./config/environment
Спасибо
Я использую жемчужину Pry в моей консоли Rails, но приправленная ароматная рельсовая консоль, похоже, потеряла перезагрузку! метод перезагрузки моделей и прочее.
Вот как я запускаю консоль pry
c:\rails\app> pry -r ./config/environment
Спасибо
Вы можете проверить эту страницу на вики Pry: https://github.com/pry/pry/wiki/Setting-up-Rails-or-Heroku-to-use-Pry
Также ознакомьтесь с плагином pry-rails
: https://github.com/rweng/pry-rails
В этой вики также много другого контента, это отличный ресурс.
Использовать перезагрузку! как команда консоли rails, добавьте этот код в свой .pryrc
# load Rails Console helpers like reload
require 'rails/console/app'
extend Rails::ConsoleMethods
puts 'Rails Console Helpers loaded'
ИЗМЕНИТЬ == Gem pry-rails уже делают все это намного проще.
Для тех, кто недавно пришел к этому вопросу: ответ изменился в Rails 3.2, потому что они изменили способ реализации reload!
Где в более ранней версии команды irb были добавлены как методы в Object
, теперь они добавлены на IRB::ExtendCommandBundle
, чтобы избежать загрязнения глобального пространства имен.
Что я сейчас делаю (1) в development.rb
silence_warnings do
begin
require 'pry'
IRB = Pry
module Pry::RailsCommands ;end
IRB::ExtendCommandBundle = Pry::RailsCommands
rescue LoadError
end
end
и (2) в .pryrc
if Kernel.const_defined?("Rails") then
require File.join(Rails.root,"config","environment")
require 'rails/console/app'
require 'rails/console/helpers'
Pry::RailsCommands.instance_methods.each do |name|
Pry::Commands.command name.to_s do
Class.new.extend(Pry::RailsCommands).send(name)
end
end
end
Здесь ссылка на запрос на загрузку Rails, где было внесено изменение, https://github.com/rails/rails/pull/3509
Вы можете сказать Pry, чтобы загрузить среду Rails в .pryrc
rails = File.join Dir.getwd, 'config', 'environment.rb'
if File.exist?(rails) && ENV['SKIP_RAILS'].nil?
require rails
if Rails.version[0..0] == "2"
require 'console_app'
require 'console_with_helpers'
elsif Rails.version[0..0] == "3"
require 'rails/console/app'
require 'rails/console/helpers'
else
warn "[WARN] cannot load Rails console commands (Not on Rails2 or Rails3?)"
end
end
Это вернет ваш reload!
.
Недавно я написал сообщение о pry и rails. Вы можете найти его здесь http://lucapette.com/pry/pry-everywhere/. Кстати, как сказал Дэйв, вы хотели бы использовать pry с:
pry -r ./config/environment
Я рекомендую вам попробовать то, что я написал в статье, он работает очень хорошо.
alias pryr="pry -r ./config/environment -r rails/console/app -r rails/console/helpers"
Если у вас возникли проблемы с Zeus и Pry, попробуйте добавить к своему .pryrc
:
if Kernel.const_defined?(:Rails) && Rails.env
require File.join(Rails.root,"config","environment")
require 'rails/console/app'
require 'rails/console/helpers'
extend Rails::ConsoleMethods
end
Взято из здесь
Вы имеете в виду ./config/environment
?
В любом случае, я думаю, что отличается от фактического запуска консоли рельсов, откуда приходит reload!
. Я переопределяю IRB = Pry
в моем конфигурационном файле, зависящем от env, который обеспечивает полную консоль, и все это работает как прелесть.
Лучшая версия ответа @Rodrigo Dias. Если вы не хотите использовать гем .pryrc
pry-rails
просто добавьте следующее в ваш .pryrc
-
if defined?(Rails) && Rails.env
if defined?(Rails::ConsoleMethods)
include Rails::ConsoleMethods
else
def reload!(print=true)
puts "Reloading..." if print
ActionDispatch::Reloader.cleanup!
ActionDispatch::Reloader.prepare!
true
end
end
end
Этот код правильно идентифицирует среды и не включает вслепую Rails::ConsoleMethods
.
Источник - Github тема комментария