production環境とdevelopment環境で複数のターミナルを開いている時に、誤ってproduction側でUser.delete_all
なんてやってしまった日には、泣くしかありません。
そうならないために、pryのpromptを拡張して自分が今どの環境のコンソールを触っているかわかるようにする。
以下をGemfile
に書く。
Gemfile
gem 'pry', require: false
gem 'pry-rails', require: 'pry-rails/console'
稼働しているサイト側でもpryを読み込んでしまうと無駄なメモリを使用してしまうので、require: false
を必ず付ける。
pry-debugger
などのpry拡張はproductionでは不要のため、group :development
の中に入れておく。
config/initializers/pry.rb
if defined?(Rails::Console)
require 'pry'
env = if Rails.env.production?
Pry::Helpers::Text.red(Rails.env)
elsif Rails.env.development?
Rails.env
else
Pry::Helpers::Text.purple(Rails.env)
end
Pry.config.prompt = [
proc {|target_self, nest_level, pry|
nested = (nest_level.zero?) ? '' : ":#{nest_level}"
"[#{pry.input_array.size}] #{env} #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}(#{Pry.view_clip(target_self)})#{nested}> "
},
proc {|target_self, nest_level, pry|
nested = (nest_level.zero?) ? '' : ":#{nest_level}"
"[#{pry.input_array.size}] #{env} #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}(#{Pry.view_clip(target_self)})#{nested}* "
}
]
end
これで、以下のようにプロンプトが表示され、誤操作の心配がなくなります!