Подтвердить что ты не робот

Pry gem как перезагрузить?

Я использую жемчужину Pry в моей консоли Rails, но приправленная ароматная рельсовая консоль, похоже, потеряла перезагрузку! метод перезагрузки моделей и прочее.

Вот как я запускаю консоль pry

c:\rails\app> pry -r ./config/environment

Спасибо

4b9b3361

Ответ 2

Использовать перезагрузку! как команда консоли rails, добавьте этот код в свой .pryrc

# load Rails Console helpers like reload
require 'rails/console/app'
extend Rails::ConsoleMethods
puts 'Rails Console Helpers loaded'

ИЗМЕНИТЬ == Gem pry-rails уже делают все это намного проще.

Ответ 3

Для тех, кто недавно пришел к этому вопросу: ответ изменился в 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

Ответ 4

Вы можете сказать 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!.

Ответ 5

Недавно я написал сообщение о pry и rails. Вы можете найти его здесь http://lucapette.com/pry/pry-everywhere/. Кстати, как сказал Дэйв, вы хотели бы использовать pry с:

pry -r ./config/environment

Я рекомендую вам попробовать то, что я написал в статье, он работает очень хорошо.

Ответ 6

alias pryr="pry -r ./config/environment -r rails/console/app -r rails/console/helpers"

Ответ 7

Если у вас возникли проблемы с 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

Взято из здесь

Ответ 8

Вы имеете в виду ./config/environment?

В любом случае, я думаю, что отличается от фактического запуска консоли рельсов, откуда приходит reload!. Я переопределяю IRB = Pry в моем конфигурационном файле, зависящем от env, который обеспечивает полную консоль, и все это работает как прелесть.

Ответ 9

Лучшая версия ответа @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 тема комментария