Ruby, Ruby on Rails 3 Tips

ある程度コードを書いていると、使わなくなったメソッドや、新しいメソッドを作ったので使って欲しくないメソッドなどが多々出てくるかと思います。 コメントで書いておいても、使う人はいるし、既存コードで知らぬ間に使ってあったりもします。 そんな時は depricatedをログに出力するようにしてしまいましょう。 そうすれば、その処理を通るたびにワーニングとしてdepricatedなメッセージが出力されるので 対処しやくすなります。 書き方としては、 def old_method warn " ...

Ruby on Rails 3 Tips

RailsからMySQLのテーブルを作成するには Railsのマイグレート機能には、カラム属性としてbinaryがあるのですが、これを指定してもMySQL上ではBLOBというカラム属性になります。 構文としては create_table :user_photos do |t|   t.string :name   t.binary :photo_image end もっと大容量のLONGBLOBが欲しい! という時にはbinaryの所にオプションで:limit => 16.megabyte ...

Ruby on Rails 3 Tips

scope :active, where('deleted_at is null') というスコープを設定したとして この条件を含むSQLをコード内で取得したい場合ってありますよね。 SQL書いてでゴニョゴニョしたい場合とか…。 そんな時には Article.active.to_sql としてやれば、 select * from articles where deleted_at is null というSQLが取得出来ます。 参考例 # === タグ class Tag < Act ...

Ruby on Rails 3 Tips

class ActiveForm include ActiveModel::Conversion extend ActiveModel::Naming include ActiveModel::Validations def persisted?; false; end def initialize(attributes = {}) attributes.each do |name, value| send("#{name}=", value) rescue nil end ...

Ruby, Ruby on Rails 3 Tips

sql = " SELECT * FROM users WHERE created_at >= '#{2.weeks.ago}' ORDER BY created_at DESC " @users = User.paginate_by_sql(sql, :page => params, :per_page => 20) こんな感じ

Ruby on Rails 3 Tips, Ruby on Rails 3 プラグイン

Rails 2.x系で、論理削除と言ったら、もうこれ!というのが acts_as_paranoid でした。 Rails 3.x系では rails3_acts_as_paranoid を使います。 インストールの方法は GemFileに gem "rails3_acts_as_paranoid", "~>0.2.0" と追記して bundle実行 ※Rails3.1の場合は、GemFileに書くプラグインのバージョンが"~>0.1.4"になります。 ※Rails3.0の場合は、Gem ...

Ruby, Ruby on Rails 3 Tips

UbuntuにRails3.2.8の実行環境を一からインストールしてみます。 Ubuntuは12.04を使用します。 まずは Rubyから、と言いたい所ですが、必要パッケージ類から sudo apt-get install make build-essential libssl-dev zlib1g-dev \ apache2-mpm-prefork apache2-prefork-dev libapr1-dev libaprutil1-dev \ libcurl4-openssl-dev li ...

Ruby, Ruby on Rails 3 Tips

Rails 3.2では、javascriptやstylesheetはassetにまとめられます。 ここにまとめられたものは 例えばstylesheetであれば自動的に「コントローラ名.css.scss」がcssコンパイルされ、 リンクされます。自分で指定する場合は <%= stylesheet_link_tag "users" %> とすればリンク出来ます。 さて、Rails3.2では、stylesheetはscssが、JavaScriptはCoffeScriptがそれぞれ 標準で使 ...

Ruby, Ruby on Rails 3 Tips, Ruby on Rails 3 プラグイン

Ruby on RailsからSolrを使うには、このプラグインを使うと良さそうだ sunspot_rails ホームページは sunspotプロジェクトの一部になっています。 インストールは Ruby on Rails 3の場合 gemfileに gem 'sunspot_rails' gem 'sunspot_solr' # optional pre-packaged Solr distribution for use in development を追加 あとは bundle instal ...

Ruby on Rails 3 Tips, Ruby on Rails メモ

バッチ処理として書いたrbファイルをテストする場合 テストケース内で system("ruby バッチファイル") としても良いが たとえばTimecopで日付を固定してテストする場合には具合が良くない。 バッチのプロセスが別プロセスで動くため、Timecopの設定がバッチに反映されない。 なので systemで呼び出している部分を load "バッチファイル" というように、loadに変えると、そのバッチ処理が都度ロードされるので テストを実行しているプ ...

Ruby on Rails 3 Tips, Ruby on Rails メモ

Railsで日付処理は、意外と簡単に出来たりする。 1日前 1.days.ago 1日後 1.days.from_now 1ヶ月前 1.months.ago 1ヶ月後 1.months.from_now 1年前 1.years.ago 1年後 1.years.from_now また、本日の開始日時として、たとえば 2011-10-01 00:00:00 という情報を取りたい場合 Date.today.beginning_of_day 逆に 2011-10-01 23:59:59 という情報を取り ...

Ruby on Rails 3 Tips, Ruby on Rails メモ

Railsで… ホスト名(gendosu.jpという感じ)を得る request.host ホスト名:ポート番号(gendosu.jp:80という感じ)を得る request.host_with_port

Ruby on Rails 3 Tips, Ruby on Rails メモ

Rails 2.*系のプロジェクトで、rakeコマンドをたたくと、 rake/rdoctask is deprecated. Use rdoc/task instead (in RDoc 2.4.2+) というエラーが発生することがある。 このエラーは rake のバージョンが新しすぎるのが原因。 基本的にRails3.0.5より前のRailsでは、rakeのバージョンは0.8.7を使う。 新しいrakeが入っている場合 gem uninstall rake gem install rake - ...

Ruby on Rails 3 Tips

uninitialized constant Rake::DSLの対処

Ruby on Rails 3 Tips

Aptana Studio 3 にしたところ、Ruby on Railsの表示にテーマが適用されるようになった。 これはこれで、背景が黒でかっこいいのだが、SVNのベースリビジョンとの比較をかけたりすると、すべて真っ黒で良く見えない。 簡単に行くなら、テーマを変えるのがいいが、せっかくなので、Aptana Studio 3 のテーマのままでなんとかしたい。 ま、背景黒というのは諦めて、白くする 白くすると、キーワードなどが色が薄すぎて見えない ので、色を濃くする。 そんな感じのことを地道にやって ...

Ruby on Rails 3 Tips

Aptana Studio 3 で、Shift Right, Shift Leftのショートカットキーを設定する

Ruby on Rails 3 Tips

ImageMagickのをソースからインストール ※/usr/localに入るので、rootで実行 ./configure make install /usr/local/libをライブラリ登録 /etc/ld.so.conf.dに ImageMagick.confファイルを作成 ファイルの中に /usr/local/lib を記入 ldconfigを実行 rmagickのインストール gem install rmagick

Ruby on Rails 3 Tips

コントローラで rescue_from を指定することで、そのコントローラで例外が発生したときなどに実行する処理を指定することが出来る。 class UserController < WomanController rescue_from Exception, :with => :catch_exception def catch_exception render :file => '/public/404.html', :status => 404 end end

Ruby on Rails 3 Tips

Rails3の日本語化をする #config/application.rbファイルの編集 このファイルに日本語で動くことを指定する設定を追加する config.i18n.default_locale = :jp #config/localesディレクトリにjp.ymlファイルを設置 jp.ymlファイルの中身は "jp": errors: template: header: one: "1 個のエラーが発生しました" other: "{{count}} 個のエラーが発生しました" # The v ...

Ruby on Rails 3 Tips

rails3のプロジェクトを作成し、起動時に rails s -e production という感じでプロダクションモードで起動したときに、なぜかpublic配下のファイルがすべてNot Foundになってしまう。 これは、config/environments/production.rb ファイルの中の config.serve_static_assetsという設定があるのだが、これをtrueに設定してやることで、表示できるようになる。 ちなみに、サーバに配置してpassengerなどでpro ...