Railsで可読性の高いステート・マシンを実現できるGem State_machine Feb 25th, 2013 Tweet Ruby/Rails内でステート・マシンを実現してくれるGem、『state_machine』の紹介です。model内に直感的なコードを書くことができ、かつメンテナンスもしっかり行われているので、オススメです!
translations Documentation RSpec is a great tool in the behavior-driven development (BDD) process of writing human readable specifications that direct and validate the development of your application. On the web there are many resources that give complete overview of _what_ you can do with RSpec. But there are fewer resources devoted to how to create a great RSpec test suite. Better Specs tries to
I'm using rails 4 & ruby 1.9.3 for my application and fancybox2-rails gem, but there's a general problem with asset pipeline. If I run rake task for precompile, then everything is fine except for images in vendor/assets/images and ../gems/ruby-1.9.3-p327/gems/fancybox2-rails-0.2.1/vendor/assets/images. Images from these two folders are not being precompiled and eventually I have a problem with dea
11月22-23日にSFC ORFというSFCの研究室の発表会があって、そこでデモするブツに使う部品としてBuffaloの赤外線学習リモコンのRubyラッパーを書きました。これで家に帰る前に暖房つけたりできてうれしいですね。 玄人志向のKURO-RSとBuffaloのPC-OP-RSを操作できます。 MacとLinuxと、試してないけどたぶんWindowsでも動く気がする。コードはgithubに置いてる。 学習リモコン/KURO-RS/(1)使ってみる – 脳みそ沸騰中!のPerlのコードを参考にしました。 ■PC-OP-RSを買う 気がついたらKURO-RSがどこにも売ってないんだけど、PC-OP-RSがKURO-RSと同じハードウェアで箱と付属ソフトが違うだけなのでどちらでも動かせます。 ■インストール gem install kuro-rs そしてKURO-RSをMacやLinuxに
ActiveRecord Capybara Cucumber Devise EnvYAML Git HAML Heroku Hoptoad Jammit jQuery Less CSS MongoMapper MongoHQ Mongoid MooTools OmniAuth Pow Prototype RailsAdmin Redis RedisToGo RightJS RSpec SASS Sequel Settingslogic Slim Test::Unit Use the default ActiveRecord database store. Use the Capybara acceptance testing libraries with RSpec. Use Cucumber for integration testing with Capybara. Utilize D
先日の「Lion へアップグレードしたら Homebrew が動かなくなったりもしたけれど、私はげんきです」の続きというか何というか。 Snow Leopard から Lion へアップグレード後、bundle install したらエラーが発生したので現象と対処方法をメモしておきます。 なお、エラーは(別々に)2回発生しましたが、現象も対処方法も類似しているので、ひとつのエントリーにまとめました。 *1. 現象 その1 エラーメッセージを検索キーワードに入れてググる人がおられると思うので、エラーメッセージを長めに引用しました。 $ bundle install --path vendor/bundle Fetching source index for https://rubygems.org/ Installing rake (0.9.2.2) ... Installing json
railsでファイルダウンロードさせるためにsend_fileを使うときに日本語ファイル名でダウンロードさせるとき、私は以下のようにしていました。 filename = "今後の予定.xls".encode("cp932") send_file(f, :filename => filename) cp932でencodeしているのは、utf-8でおくるとIEが文字化けしていたので、そうしています。 普段は、chromeでも特に問題がありません。 しかし、たまに文字化けが出ていました。 上記のファイル名の場合は「予」の部分で文字化けがおきてしまいます。 これの原因は、たぶん以下のサイトで書いてあることが影響している気配です。 https://sites.google.com/site/fudist/Home/grep/damemoji で対策として以下のようにするようにしました。 filen
外部サービスと連携すると、連携するサービスの状況に依存していろいろなエラーが発生したりします。 例えば外部サービスが高負荷であるために、タイムアウトのエラーが発生したり、強制的にコネクションをリセットされるようなエラーなど様々です。 その状況が発生した際に、利用ユーザにエラー画面を表示したり、再操作を指示するメッセージを表示するのは、ユーザ視点で考えると微妙ですね。 ではどうすればよいでしょうか? そんなときは、retryableというライブラリ(gem)を利用するとよいです。 このretryableというgemは、名称から推測できるとおり、失敗(エラー)したときにリトライしてれるものです。 例えば、SonicGardenが提供しているサービス『youRoom』では、Facebookアカウントでログインという機能があります。 その認証に稀ではありますが以下のようなエラーが発生することがあり
Ruby で AND, OR の論理演算を行うための論理演算子には {&&,||} と {&,|} の 2 種類あります。この 2 種類は似ていてまぎらわしいのですが、 {&&,||} は制御構造で、{&,|} はメソッド とだけ覚えておきえば区別できます。 これだけ覚えておけば、 (1) {&,|} の両辺は必ず実行される。{&&,||} の右辺は実行されないことがある (2) {&&,||} の両辺は任意のオブジェクト、{&,|} の左辺は true から false のみ という違いは簡単に理解できます。 (1) {&,|} の両辺は必ず実行される。{&&,||} の右辺は実行されないことがある {&, |} はメソッドでした。ですので、 foo & bar foo | bar は、 foo.&(bar) foo.|(bar) というメソッドで書き直すことができます。こう書き直してみ
■ [okark01] 岡山 Ruby 会議 01 に参加してきた 岡山 Ruby 会議に参加してきた。朝 9:30 の飛行機に乗って 11:30 に到着、そこから大場さん夫妻と徳島ラーメンを食べてから会場へ。 発表の中で良かったのは、学生の研究発表かなあ。Agile Development with Rails を読みながら自分たちでやり方を考えて進めていたと言っていたけど、やり方はスクラムそのもので、 期間をちゃんとタイムボックスに区切ってリリースしている チームメンバーでロールを交代制にしている タイムボックスの終わりには開発MTGと呼ばれるものを開催して、次へのフィードバックを作っている というあたりが大変良いなあと思ったのでした。git や cucumber を当たり前に使っているあたりも良く、特に研究室で蓄積したべからず集がいわゆるふつうの開発現場でもやってはいけないことリスト
2013年12月2日更新: 参照されることが多いので Rails 4 の情報を訳注として追記しました。また、Rails 4 に関する情報は、 WEB+DB PRESS Vol.73 が非常に参考になるので、一読をおすすめします。 この文章は Mitch Crowe 氏のブログより 2012年4月14日の記事を翻訳したものです。 The 10 Most Underused ActiveRecord::Relation Methods http://blog.mitchcrowe.com/blog/2012/04/14/10-most-underused-activerecord-relation-methods/ 昨日は ActiveRecord::Relation のコードに膝まで浸かって、使われているのをこれまで全然見たことがない面白いナゲットを思い出させてくれた。この記事で、十分に活用
個人的に、Rails界隈でよくチェックしているサイトをまとめておきます。 プラグイン The Ruby Toolbox プラグインの情報を探す時は、大概ココから入ります。プラグインに関するドキュメント、スクリーンキャスト、ブログエントリー等を、皆でプラグインに紐付けられるようになっているので便利です。また、そのプラグインがどのくらい人気があるのか視覚的に分かるようになっているので、最近急に人気が出ているプラグインとか発見出来たりします。単純にブラブラと徘徊していても楽しいサイトです。 技術情報/チュートリアル Ruby5 海外の有名な企業Envy Labsが情報を掲載しているサイトです。主に、RubyやRails界隈の最新情報、トピックス等を1週間置きくらいに更新しています。 Coding Edge @ITで取り上げられているカテゴリ。情報量は少なめです。 Ruby on Rails Tu
2012年05月10日11:00 Ruby Linux CentOS6.2 に Rails + Nginx + Unicorn な環境を作った 必要になって久しぶりに環境作りました。にしても、しばらく触ってなかったからかいろいろ忘れてて大変でした。今度のために簡単にまとめておきます :D ネットワーク まずはネットワーク周りの設定をします。 vi /etc/sysconfig/network-scripts/ifcfg-eth0 vi /etc/sysconfig/network # NETWORKING_IPV6=no vi /etc/resolv.conf sudo /etc/init.d/network restart ssh 次は ssh 周りの設定です。ポート番号変えたりとかパスワード認証不可にしたりとか公開鍵認証を許可したりとかすると良いでしょう。 vi /etc/ssh/ss
(追記:2013-08-16) 本記事のトリビアを含む55のトリビアを以下の記事にまとめました。 知って得する!55のRubyのトリビアな記法 半年くらい前にちょっとトリビアだけど、知っていると意外と便利なRubyの記法を21個紹介したよ。 知って得する21のRubyのトリビアな記法 ~ 21 Trivia Notations you should know in Ruby 今回はその第2弾だよ! ちょっと数が少ないけど、知らないものがあったらへーとかほーとか、得したとか言ってもらえるとうれしいよ。 1.Enumerator#with_index 任意のリストを標準出力するときに連番を同時に振るとしたら、普通はEnumerable#each_with_indexを使うよね。 names = Module.constants.take(10) names.each_with_index {
(追記:2013-08-16) 本記事のトリビアを含む55のトリビアを以下の記事にまとめました。 知って得する!55のRubyのトリビアな記法 ちょっとトリビアだけど、知っていると意外と便利なRubyの記法を21個拾ってみたよ(Ruby1.9限定)。 君なら全部知ってるかもしれないけど.. 1. 動的継承 Rubyのクラス継承では < 記号の右辺にクラス定数だけでなくクラスを返す式が書けるよ。 class Male def laugh; 'Ha ha ha!' end end class Female def laugh; 'Fu fu fu..' end end class Me < [Male, Female][rand 2] end Me.superclass # => Female Me.new.laugh # => 'Fu fu fu..' def io(env=:develop
2012年04月19日 最近、新人のテストコードを見る機会があり、ユニットテストの書き方について考える機会があった。ユニットテストはテンプレートみたいなものがあるので、それさえ押さえれば、誰でも簡単に書くことができる。 ここでは、その方法について紹介したい。サンプルはRSpecで書くが、その他のユニットテストフレームワークでも、応用ができるとおもう。 はじめにごく単純化すると、テスト対象は状態を持ち、入力を与えると何らかの出力を行なうものである。入力が変われば出力は変化するし、状態が変化すると入力が同じでも出力が変わる(かもしれない)。 ユニットテストは、テスト対象の状態を操作し、与えた入力によって意図通りの出力を得られるかを確認する作業のことをいう。なので、ユニットテストを書くときには、オブジェクトの状態ごとにメソッド単位で入力と出力を確認するようにする。 RSpecの疑似コードで書くと
WheneverはCronを利用して繰り返し処理を行うためのライブラリ。 シェルコマンドやRailsのRunner、RakeタスクなどのジョブをCronで実行できる。 実際のところCrontabへの登録を補助してくれるだけなのだが、そのシンプルさがかえって分かりやすい。 バッチ処理の管理にうってつけ。 タイトルではRailsとなっているがRails以外でも利用できる。 以下はRails3での使い方メモ。 導入 Gemfileに以下の行を追加してbundle install gem 'whenever', :require => false schedule.rbの編集 config/schedule.rbにスケジュール設定を書いていく。 bundle exec wheneverize . を実行するとひな形を作ってくれるので、それを元に編集していくのが吉。 スケジュールは「every」に続
nginx+passengerのインストール gemを使ってpassengerをインストールします。 gem install passenger curl-develのインストールができていない場合は yum install curl-devel nginxのモジュールをインストールします。 passenger-install-nginx-module 基本的にほとんどEnterで進めて大丈夫です。 カスタムしたnginxかスタンダードのnginxをインストールするか聞かれます。 カスタマイズを別段する必要がなければ、1を選んでください。 最後にnginxに記入する必要がある部分を聞かれます。 上記のようにnginx.confを書き換えます。 vi /opt/nignx/conf/nignx.conf ・rootの部分にrailsのpublicを指定します。 ・passenger_enab
2011年07月26日13:29 Ruby Railsエンジニアならこれだけは知っておけっていう便利メソッド Object#presence と Object#try という便利なメソッドがあることをご存知ですか?この2つのメソッドはとっても便利なのでちょっと紹介してみます。 Object#presence メソッド これは以下のような定義となっています。 def presence self if present? end present? メソッドというのはみんな大好き blank? の反対のメソッド (!blank?) です。 つまり、nil, false, [](空配列), {}(空ハッシュ), ""(空文字列), " "(半角スペースだけの文字列)であれば false、それ以外であれば true になります(blank? って半角スペースだけの文字列を true と判定するの知って
WEB+DB PRESS vol.61の「Rails3テスト最前線」という記事がかなり良かったので、注釈を交えて紹介したいと思います。 何が良かったのか? 自分はRails2系でTest::Unitを実践していました。AutoTestとYAMLによるデータ投入でおおむね満足していましたが、次のポイントが気になっていました。 YAMLによるデータ投入は重複が多いのでコピペでデータを作成していた。 Test::Unitはログイン処理など共通の処理をくくり出すのが難しかった。 Viewのテストの方法が分からなかった。 しかしこの記事で気になる点がスパッと解消されました。私と同じような人はこの雑誌の記事が役に立つと思います。 ちなみに私はMacのSnow Leopard上でRuby1.9.2を使ってこの記事の内容を試しました。1.8.7を使う前提で書かれている箇所もあるので注意してください。(後で
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く