Tech Racho エンジニアの「?」を「!」に。
  • 開発

pry/pry-railsでコンソール出力のページャを無効にする

久々の投稿です.

prypry-rails,便利ですよね.RailsはActiveRecordでデータ制約を多く記述する関係で,昔Webアプリを書いていたときほど直接SQLを叩いてデータを修正することが少なくなりました.運用上一時的なコードスニペットを走らせたい時なんかは,テキストエディタでコードを下書きして,

$ bundle exec rails c

してRubyのコードからデータを修正したりします.便利.

ただ,今回100件くらいあるデータをpry-rails経由でコピペして突っ込もうとしたらうまく行きませんでした.原因はpryのデータ表示機能でした.

具体的にはこんな感じのコードを書いていました.

data = []
data << {:field_1 => 'abcde', :field_2 => 10, :field_3 => '2727291'}
data << {:field_1 => 'fghij', :field_2 => 200, :field_3 => '12177'}
# more data

data.each do |d|
  SomeModel.new d
  d.save!
end

すると,30件くらいまでは問題ないのですが,それ以上のデータになるとコンソールにコードをコピペしてもsyntax errorが出てしまいます.pryが1行評価する毎に評価結果の値をコンソール出力するのですが,データが大きいと値の表示が1ページに収まりきらず,ページャが起動してしまいます.コピペの場合,文字列のコピペの間にページャの起動が挟まって,結果としておかしなデータがpryに渡ってしまうわけですね.

この問題は以下のコードで解決しました.(参考:https://github.com/pry/pry/wiki/Customization-and-configuration

Pry.config.pager = false

これでページャが無効になります.

これさえ覚えておけば,ken_all.csvみたいなデータを一次変数に格納したり評価しても大丈夫ですね!

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。