подглядывать как перезагрузить? - PullRequest
34 голосов
/ 08 сентября 2011

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

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

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

Спасибо

Ответы [ 9 ]

19 голосов
/ 10 декабря 2012

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

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

EDIT == Драгоценные камни уже делают все это, намного проще.

12 голосов
/ 23 января 2012

Для тех, кто недавно приходил на этот вопрос: ответ изменился в Rails 3.2, потому что они изменили способ реализации reload! Где в более ранней версии команды irb были добавлены как методы к Object, теперь они добавлены на IRB::ExtendCommandBundle, чтобы избежать загрязнения глобального пространства имен.

Что я делаю сейчас (1) в разработке. 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

Вот ссылка на pull-запрос Rails, где было внесено изменение - https://github.com/rails/rails/pull/3509

6 голосов
/ 08 сентября 2011

Вы можете проверить эту страницу в вики Pry: https://github.com/pry/pry/wiki/Setting-up-Rails-or-Heroku-to-use-Pry

Также проверьте плагин pry-rails: https://github.com/rweng/pry-rails

Там также много другого контентавики, это отличный ресурс.

6 голосов
/ 08 сентября 2011

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

2 голосов
/ 19 января 2015

Если у вас возникли проблемы с Зевсом и Прай, попробуйте добавить к вашему .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

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

2 голосов
/ 18 октября 2011
alias pryr="pry -r ./config/environment -r rails/console/app -r rails/console/helpers"
2 голосов
/ 08 сентября 2011

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

pry -r ./config/environment

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

1 голос
/ 08 сентября 2011

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

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

0 голосов
/ 21 июня 2018

Лучшая версия @ 1001 * ответа @Rodrigo Dias .Если вы не хотите использовать pry-rails gem, просто добавьте следующее в ваш .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-тема комментарий

...