#author("2021-12-07T11:43:43+00:00","default:hotate","hotate") #author("2023-09-17T08:55:10+00:00","default:hotate","hotate") #contents &tag(Ruby, 情報); &tag(Ruby); * [[書籍]] [#g3da4a8f] - [[改訂2版 Ruby逆引きハンドブック>https://amzn.to/2vqCIKp]] * [[リファレンス]] [#w1b6ea8c] - [[Ruby 1.8.7 リファレンスマニュアル>http://doc.ruby-lang.org/ja/1.8.7/doc/index.html]] - [[逆引きRuby>http://www.namaraii.com/rubytips/]] - [[Ruby入門>http://www.rubylife.jp/ini/]] - [[Ruby入門勉強ルーム>http://www.mapee.jp/ruby/]] - [[Ruby - 俺の基地>http://yakinikunotare.boo.jp/orebase/index.php?Ruby]] - [[Rubyを始めたい方向けまとめ(2011年秋版) - 223 Software>http://www.223soft.net/54]] - [[Ruby初心者が失敗しがち/間違えがちなこと5選 | Workship MAGAZINE(ワークシップマガジン)>https://goworkship.com/magazine/ruby-beginner-mistakes/]] 「return」ではなく「next」を使うと、ブロック引数の途中で得られた値を、そのループでの結果として取得できます。 ** [[Dash]] [#l086d584] - [[Ruby リファレンスマニュアル for Dashz>http://labocho.github.io/rubydoc-ja-docsets/]] * [[macOS]] [#f83bd2da] - [[Rubyのインストール>https://www.ruby-lang.org/ja/documentation/installation/#rbenv]] 多くの OS X ユーザはパッケージマネージャとして Homebrew を使っています。 これを使うと本当に簡単に Ruby を手に入れることができます: $ brew install ruby * バージョン [#pe44005e] ** 2.4 [#z383a22e] - [[サンプルコードでわかる!Ruby 2.4の新機能と変更点 - Qiita>http://qiita.com/jnchito/items/9f9d45581816f121af07]] 予定通り、2016年12月25日にRuby 2.4.0が正式リリースされました。 ** 2.3 [#o4173df7] - [[サンプルコードでわかる!Ruby 2.3の主な新機能 - Qiita>http://qiita.com/jnchito/items/0faac073cb77417d61c7]] Ruby 2.3が2015年12月25日にリリースされました。 ** 2.0 [#w01b77b1] - [[Ruby 1.8/1.9/2.0 系の違い - 君の瞳はまるでルビー - Ruby 関連まとめサイト>http://www.ownway.info/Ruby/index.php?version]] 僕がつまずいた Ruby 1.8/1.9/2.0 系の環境の差異をまとめていきます。 * メール [#a3768887] - [[Rubyで日本語のメールを送る。 - こせきの技術日記>http://d.hatena.ne.jp/koseki2/20090328/rubymail]] - [[コラム - Ruby & Rails | 第7回 RubyでのメールはMailライブラリにおまかせ!|CTC教育サービス 研修/トレーニング>http://www.school.ctc-g.co.jp/columns/masuidrive/masuidrive07.html]] RailsにはActionMailerというライブラリがありますが、今回はその中でも使われているMailライブラリ(*1)をご紹介いたします。 * YAML [#te0640af] - [[Ruby/yamlを使う - TOBY SOFT wiki>http://tobysoft.net/wiki/index.php?Ruby%2Fyaml%A4%F2%BB%C8%A4%A6]] - [[Rubyist Magazine - プログラマーのための YAML 入門 (中級編)>http://magazine.rubyist.net/?0010-YAML]] - [[Rubyはじめました: YAML形式の設定ファイルを作る>http://myruby.seesaa.net/article/136735614.html]] - [[Ruby 基本ライブラリ>https://gist.github.com/tkhori/b11f608c3c89bf439889]] file.open('aaa.txt') #あとで閉じる必要あり file.close -- コメント:下記のコードでは、まだファイルに出力されていない為、追記できない。(2021/12/07) YAML.dump(data, File.open('foo.yml', 'w')) * [[Excel]] [#f57eb3a0] - [[The Ruby Spreadsheet | Writing and Reading Spreadsheets with Ruby>http://spreadsheet.ch/]] - [[RubyでExcelを操作する>http://www.trail4you.com/TechNote/Ruby/excel.html]] - [[Rails3 事始め: [Rails3] Spreadsheetを使う(その2)>http://rails3try.blogspot.jp/2011/06/rails3-spreadsheet_01.html]] sheet.each や row.each ではちゃんとデータが入っている範囲だけを走査してくれます。 - [[Ruby - RailsでExcelを扱うGemまとめ - Qiita>http://qiita.com/Kta-M/items/02a2c41c5624f75498aa]] ・.xlsでもいいからネット上の情報が豊富なやつを使いたい -> spreadsheet ・システムのみでリッチな.xlsxファイルを作りたい -> axlsx ・.xlsxファイルを読み出すだけでいいから気軽に扱いたい -> roo ・テンプレートの.xlsxファイルがあって、それにデータを書き込んで保存したい -> rubyXL - [[Rubyによるデータ処理>http://oku.edu.mie-u.ac.jp/~okumura/ruby/data.html]](奥村晴彦) roo-rb/roo はExcelの *.xlsx を読む。 ** Roo [#b1e20278] - [[roo-rb/roo: Roo provides an interface to spreadsheets of several sorts.>https://github.com/roo-rb/roo]] Roo provides an interface to spreadsheets of several sorts. - [[RubyでExcelファイルを読み込むgem「roo」を使う - Qiita>https://qiita.com/guri3/items/f20487516311b2a3db37]] この記事では、主にExcelファイルを扱う際に使用出来るメソッドなどを調べてみます。 - [[Rubyでエクセルを操る方法(roo、roo-xls) - Qiita>https://qiita.com/opiyo_taku/items/32ead8a2af0209d8116a]] ただし!なんか変な動きするので共有しておく 日付がセルによって数値になる * [[バックアップ]] [#p054cf93] - [[T2-Wonderland: 【ゼロから構築するRedmine】 第五回 Redmineの定期バックアップとリストアをするよ!(`・ω・´)>http://t2wonderland.blogspot.jp/2013/02/redmine-redmine.html]] Redmineのデータベースと添付ファイルをcronサービスにより定期的にバックアップし、 Windowsのクライアント環境へ時々バックアップを同期するような方法を実践してみました - [[Redmineなど汎用的に使えるバックアップ処理(shellscript+cron+rsync) - Qiita [キータ]>http://qiita.com/siluejp/items/5543acc26efec52c6ca0]] 結構汎用的に使える?そして、簡単に実装できる? クーロン+シェルを利用したバックアップ処理を書いてみました。 * 外部コマンド [#iaacf7c9] - [[外部のコマンドを実行 - happy lie, happy life>http://d.hatena.ne.jp/spitfire_tree/20080809/1218266645]] Ruby から外部のコマンドを実行する場合、使えるメソッドは以下のとおりです。 exec system `` IO.popen これらそれぞれの使い方と、実行結果を解説します。 - [[Rubyから外部プログラムを起動 - None is None is None>http://doloopwhile.hatenablog.com/entry/2014/02/04/213641]] Rubyで外部プログラムを実行する、たいがいのケースはOpen3.capture3でまかなえます。 - [[Rubyで外部コマンドを実行して結果を受け取る方法あれこれ - Qiita>http://qiita.com/tyabe/items/56c9fa81ca89088c5627]] Open3.capture3 標準入出力を使ったデータのやりとりを簡単に使いたい場合に便利 - [[IO.popenでCLIツールを楽々操作 - Bye Bye Moore>http://shuzo-kino.hateblo.jp/entry/2013/12/30/230245]] IO.popenでCLIツールを楽々操作できます。 わざわざパイプで繋がなくとも、対象を引数として与えればサブプロセスとしてやってくれます。 * Proc/yield [#nad58415] - [[Ruby の yield って結局なんなの? - YNote>http://d.hatena.ne.jp/yoshidaa/20090511/1241967137]] メソッドにはブロックを渡すことができる 渡したブロックは、メソッド内で手続き型のオブジェクトとして扱われる - [[[Ruby] ブロックとProcをちゃんと理解する - Qiita>http://qiita.com/kidach1/items/15cfee9ec66804c3afd2]] 「どうせブロック引数は一つしか取れないんだから呼び出し箇所をblock.callなんて明示せずに、yieldで統一しちゃえば良いじゃん」 「ブロックは全部yieldが示すんだから、仮引数(&block)もいらなくね?」 - [[Procを制する者がRubyを制す(嘘)>https://melborne.github.io/2014/04/28/proc-is-the-path-to-understand-ruby/]] つまり& + call == yieldです。 1. &にSymbolオブジェクトが渡されたので、RubyはこれをProcオブジェクトに変換することを試みる。そのためにSymbol#to_procを呼ぶ。 2. そしてSymbol#to_procは、ブロック引数に順次渡されるオブジェクト(ここでは’charlie’などのStringオブジェクト)に対し、 &に渡されたSymbolオブジェクト(ここでは:capitalize)をメソッドとして呼ぶような実装がなされている。 - [[Rubyの array.map(&:to_s) 記法を紐解く>https://qiita.com/kenzan100/items/6344766167299b9f7e91]] - [[Rubyのyieldを使った例を教えてください yieldをどんな時に使う… - 人力検索はてな>http://q.hatena.ne.jp/1217573703]] 例:ブロックを実行する前で処理を行いたい場合 例:ensureで必ず後始末をしたい場合 * 記法 [#z1db8869] - [[Ruby初心者を脱した人が悩みがちな、ちょっと特殊な記法・演算子・イディオム - Qiita>http://qiita.com/nashirox/items/0c885edf7d78fd5a83f1]] **(アスタリスク2つ)も可変長引数ですが、こちらはキーワード引数をハッシュで受け取ることを表しています。 オプション設定が必要なメソッドで使われることが多いと思います。 &block 仮引数(例えばblock)に&(アンパサンド)を前置すると、「ブロック引数」となります。 * [[Atom]] [#r66e37ea] - [[超捗る!AtomでRubyを書く前にいれておいたほうがいいパッケージ5選 + α - Qiita>http://qiita.com/nishina555/items/d3690b057f4624d39d77]] * 標準出力 [#zf47103d] - [[Rubyに標準出力をバッファリングさせないようにする - くろの雑記帳>http://kurochan-note.hatenablog.jp/entry/2013/12/26/165918]] $stdout.sync = true - [[コチョナナバ: rubyで出力のバッファリングをやめる>https://kingyo-bachi.blogspot.jp/2011/08/ruby.html]] STDOUT.sync = true - [[JenkinsでRubyスクリプトの出力をすぐに出す - かまたま日記3>http://kamatama41.hatenablog.com/entry/2016/06/30/113309]] JenkinsのJobでRubyスクリプトを呼んだら、処理が終わるまで puts とかの標準出力がJenkinsのコンソールに出ない 標準出力がバッファリングされないようにRuby側に以下の記述を追加する $stdout.sync = true * コマンドライン引数 [#ma70d438] - [[Rubyのコマンドライン引数と環境変数について(初心者向け) | Rubyの小技 | DoRuby>https://doruby.jp/users/saronpasu_on_rails/entries/Ruby%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E5%BC%95%E6%95%B0%E3%81%A8%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6(%E5%88%9D%E5%BF%83%E8%80%85%E5%90%91%E3%81%91)]] $ ruby -c hoge.rb このように実行すると、 hoge.rb内の構文チェックを行い、正常であれば "Syntax OK" と返してくれます。 * シェバン [#t0543820] - [[いまさら聞けない、#! で始まる1行目の名前とenv指定時の挙動 - プログラマ 福重 伸太朗 ~基本へ帰ろう~>http://d.hatena.ne.jp/japanrock_pg/20100319/1268968887]] rubyでコマンドラインオプションを渡せない実験 - [[Perl, Python 及び Ruby スクリプトにおける正しいshebangの書き方 - Qiita>http://qiita.com/tueda/items/369215b99316b2e9f3d8]] Rubyが/usr/bin/rubyにあるとは限らない。システムによってはひょっとすると/usr/local/bin/rubyにあるかもしれない。 この問題を避けるために、しばしばenvコマンドが使われる。 * ハッシュ [#d12d8610] - [[Ruby - Hashをkey|valueでASC|DESCソート - Qiita>https://qiita.com/mnishiguchi/items/9095ac989ed7d51fe395]] valueでソート Hash[ h.sort_by{ |_, v| -v } ] * 構造体 [#mc82ebaf] - [[Ruby におけるハッシュ (Hash) と構造体 (Struct) の使い分け>https://qiita.com/megane42/items/5bfdb0764fa575efbdab]] Ruby ではハッシュがよく使われるが、実は構造体も使える。 * 終了 [#u7074213] - [[ruby - How to create an exit message - Stack Overflow>https://stackoverflow.com/questions/29539/how-to-create-an-exit-message]] The abort function does this. For example: abort("Message goes here") * 文字列 [#habe6a93] - [[Rubyで文字列が整数値に変換できるか調べる - それマグで!>https://takuya-1st.hatenablog.jp/entry/2013/03/26/025420]] そこで正規表現を使う。判定が安定。 "10" =~ /\d+/ #=> 0 - [[Ruby の定数やfreeze の扱い方が難しい :: by and for engineers>https://yulii.github.io/ruby-freeze-method-20150922.html]] freeze メソッド 対象のオブジェクトに対する “破壊的な操作” を禁止するだけなのでオブジェクトの参照変更(代入)はできます。 いくつか不思議な動きがありますが、 freeze はあくまでもオブジェクトを凍結するだけです。 * ドキュメント [#de49555f] - [[YARD,RDoc 比較 - Qiita>https://qiita.com/kmats@github/items/0c8919a65afbe18e9e37]] - [[[Ruby] YARDを用いてソースコードからドキュメントを生成する - Qiita>https://qiita.com/Sa2Knight/items/0092498281f8a0219595]] YARDは逆にある程度限られた内容のドキュメントしか生成できないが、その分ソースコードの書き方も限定されるので、誰が書いても同じような一貫性のあるドキュメントを生成できる。