多くの OS X ユーザはパッケージマネージャとして Homebrew を使っています。 これを使うと本当に簡単に Ruby を手に入れることができます: $ brew install ruby
予定通り、2016年12月25日にRuby 2.4.0が正式リリースされました。
Ruby 2.3が2015年12月25日にリリースされました。
僕がつまずいた Ruby 1.8/1.9/2.0 系の環境の差異をまとめていきます。
RailsにはActionMailerというライブラリがありますが、今回はその中でも使われているMailライブラリ(*1)をご紹介いたします。
sheet.each や row.each ではちゃんとデータが入っている範囲だけを走査してくれます。
・.xlsでもいいからネット上の情報が豊富なやつを使いたい -> spreadsheet ・システムのみでリッチな.xlsxファイルを作りたい -> axlsx ・.xlsxファイルを読み出すだけでいいから気軽に扱いたい -> roo ・テンプレートの.xlsxファイルがあって、それにデータを書き込んで保存したい -> rubyXL
roo-rb/roo はExcelの *.xlsx を読む。
Redmineのデータベースと添付ファイルをcronサービスにより定期的にバックアップし、 Windowsのクライアント環境へ時々バックアップを同期するような方法を実践してみました
結構汎用的に使える?そして、簡単に実装できる? クーロン+シェルを利用したバックアップ処理を書いてみました。
Ruby から外部のコマンドを実行する場合、使えるメソッドは以下のとおりです。 exec system `` IO.popen これらそれぞれの使い方と、実行結果を解説します。
Rubyで外部プログラムを実行する、たいがいのケースはOpen3.capture3でまかなえます。
メソッドにはブロックを渡すことができる 渡したブロックは、メソッド内で手続き型のオブジェクトとして扱われる
「どうせブロック引数は一つしか取れないんだから呼び出し箇所をblock.callなんて明示せずに、yieldで統一しちゃえば良いじゃん」 「ブロックは全部yieldが示すんだから、仮引数(&block)もいらなくね?」
**(アスタリスク2つ)も可変長引数ですが、こちらはキーワード引数をハッシュで受け取ることを表しています。 オプション設定が必要なメソッドで使われることが多いと思います。
$stdout.sync = true
STDOUT.sync = true
JenkinsのJobでRubyスクリプトを呼んだら、処理が終わるまで puts とかの標準出力がJenkinsのコンソールに出ない 標準出力がバッファリングされないようにRuby側に以下の記述を追加する $stdout.sync = true
$ ruby -c hoge.rb このように実行すると、 hoge.rb内の構文チェックを行い、正常であれば "Syntax OK" と返してくれます。
rubyでコマンドラインオプションを渡せない実験
Rubyが/usr/bin/rubyにあるとは限らない。システムによってはひょっとすると/usr/local/bin/rubyにあるかもしれない。 この問題を避けるために、しばしばenvコマンドが使われる。