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みたいなデータを一次変数に格納したり評価しても大丈夫ですね!

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

morimorihoge

高校卒業後,学生をやりながらずっとWebアプリ開発に携わってきました.2010くらいまではPHP/Symfonyプログラマでしたが,それ以降のWeb開発はRailsほぼ一本に宗旨替えしました.開発とは別にサーバ構築・運用も10年以上やってきているので,要件定義から設計・実装・環境構築・運用まで一通り何でもこなせます.開発以外では季節により大学でWebサービス開発やプログラミング関連の非常勤講師もしており,技術の啓蒙・教育にも積極的に関わっています.最近はPM的な仕事が増えていますが,現役開発者としていつでも動ける程度にはコードもサーバも弄る日々を送っています.AWS 認定ソリューションアーキテクト – アソシエイトレベル取りました

morimorihogeの書いた記事

開発
RubyのArray(配列)の使い方

2017年03月15日

週刊Railsウォッチ

インフラ

Rubyスタイルガイドを読む

BigBinary記事より

ActiveSupport探訪シリーズ