私はRailsコンソールでPry gemを使用していますが、pry風味のRails-consoleがモデルやものをリロードするためのreload!メソッドを失っているようです。
これが私がてこコンソールを起動する方法です
c:\Rails\app> pry -r ./config/environment
ありがとうございました
Pry wikiでこのページをチェックアウトできます: https://github.com/pry/pry/wiki/Setting-up-Rails-or-Heroku-to-use-Pry
pry-Rails
プラグインも確認してください: https://github.com/rweng/pry-Rails
そのウィキには他にもたくさんのコンテンツがあります。それは素晴らしいリソースです。
リロードを使用するには! 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はすでにこのすべてをはるかに簡単に行っています。
最近この質問に来た人のために:答えは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に.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!
が返されます。
私は最近、pryとRailsに関する投稿を書きました。あなたはそれをここで見つけることができます http://lucapette.com/pry/pry-everywhere/ 。ちなみに、デイブがすでに言ったように、あなたはこじりを使って使いたいと思います:
pry -r ./config/environment
私が記事に書いたことを試すことをお勧めします。それは本当にうまくいきます。
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 から取得
alias pryr="pry -r ./config/environment -r Rails/console/app -r Rails/console/helpers"
もしかして./config/environment
?
いずれにしても、実際にRailsコンソールを起動するのとは異なると思います。ここでreload!
から来た。 IRB = Pry
私の環境固有の設定ファイルで、完全なコンソールを保証し、それはすべて魅力のように機能します。
@Rodrigo Diasのより良いバージョン answer 。 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スレッド コメント