web-dev-qa-db-ja.com

リロードする方法宝石をこじ開ける?

私はRailsコンソールでPry gemを使用していますが、pry風味のRails-consoleがモデルやものをリロードするためのreload!メソッドを失っているようです。

これが私がてこコンソールを起動する方法です

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

ありがとうございました

35
Nik So

Pry wikiでこのページをチェックアウトできます: https://github.com/pry/pry/wiki/Setting-up-Rails-or-Heroku-to-use-Pry

pry-Railsプラグインも確認してください: https://github.com/rweng/pry-Rails

そのウィキには他にもたくさんのコンテンツがあります。それは素晴らしいリソースです。

6
horseyguy

リロードを使用するには! Rails consoleコマンドのように、このコードを.pryrcに追加します

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

EDIT == Gem pry-Railsはすでにこのすべてをはるかに簡単に行っています。

20
Rodrigo Dias

最近この質問に来た人のために:答えは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 へのリンクがあります

12
telent

Pryに.pryrcにRails環境をロードするように指示できます

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!が返されます。

6
Simon Ernst

私は最近、pryとRailsに関する投稿を書きました。あなたはそれをここで見つけることができます http://lucapette.com/pry/pry-everywhere/ 。ちなみに、デイブがすでに言ったように、あなたはこじりを使って使いたいと思います:

pry -r ./config/environment

私が記事に書いたことを試すことをお勧めします。それは本当にうまくいきます。

2
lucapette

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

here から取得

2
guapolo
alias pryr="pry -r ./config/environment -r Rails/console/app -r Rails/console/helpers"
2
grosser

もしかして./config/environment

いずれにしても、実際にRailsコンソールを起動するのとは異なると思います。ここでreload! から来た。 IRB = Pry私の環境固有の設定ファイルで、完全なコンソールを保証し、それはすべて魅力のように機能します。

1
Dave Newton

@Rodrigo Diasのより良いバージョン answerpry-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スレッド コメント

0
Swaps