rails

Railsで定数ってどこに書いたらいいの?

っていう質問がありました。以下は Rails 2.3.5 対応コードです。config/initializers/00_load_config.rb AppConfig = YAML.load_file("#{RAILS_ROOT}/config/settings.yml")[RAILS_ENV].symbolize_keys としておいて、config/settings.yml development: ema…

Rails3でscript/aboutどこ行ったのよ?

あー、./script/railsに全部統合されちゃったもんね、 $ ./script/rails about Error: Command not recognized ...(以下ヘルプ)... ねーわ。じゃーこっちしかねーわな。 $ rake -T (in /Users/babie/tmp/rails-test) rake about # Explain the current envir…

script/runner OR script/rails runner がクソ重い。どうしてくれんのよ?(Railsでのバッチ処理の手軽な方法)

Rails でバッチ処理といえば、 3.0 未満では script/runner、Rails 3.0 以上では script/rails runner コマンドがありますが、環境を全部ロードするのでスタートアップがクソ重いですよね。daemon_generatorとかを使うという手もありますが、やや大仰だなぁ…

Rails 3.0.0 って Ruby 1.9.1 対応してないの?(複数のバージョンのRubyを管理できるRVMの簡単な使い方)

してません(キリッ。Rails 3.0 は Ruby 1.8.7, 1.9.2 対応です。と、これだけではなんなんで、1台のPCに複数のRuby環境をインストールできる RVMの使い方を書きます。RVMでは今回説明する 1.9.2 以外にも、 jruby - JRuby rbx - rubinius ree - ruby Enterpris…

Rails 3.0.0.beta のドキュメントないの?(railsapi.comの使い方)

という質問がtwitterでつぶやかれてました。あります。http://railsapi.com/doc/rails-v3.0.0.beta.3/ です。railsapi.com はインクリメンタル検索ができて便利ですね。 また、Rails の各種バージョンだけでなく、 Ruby Authlogic AWS-S3 EventMachine Haml …

RailsでCometを使うにはJuggernaut1択なの?(Rails 2.3.5 で ShootingStar を動かしてみた)

ryan5500さんが、「今でもrailsでcometを実装するには、juggernaut一択なのかしら。Flashを使ってるのが嫌だなぁ。」と、つぶやいておられました。いいえ、ShootingStarもあります。ShootingStarは @takiuchi さんが開発した、スケーラビリティの高いCometサ…

サーバーに空のプロジェクトを設置したらRailsの環境情報が表示されない。どうして?

という質問がありました。具体的には、public/index.html の "About your application’s environment" というリンクをクリックしたら表示される部分のことです。 おなじみのこれですね。エラーログを見たらわかりそうなものですが、私はサーバに入れず、エラ…

JRuby on Rails on GAE のやり方があちこちでいろいろ違ってて混乱してる。どうすればいいの?

@yuya_takeyamaさんが「JRuby on Rails on GAE のやり方があちこちでいろいろ違ってて混乱している。TMTOWTDI...」と嘆いておられましたのでアドバイス致しました。私が一時期調べまわったところ、GAEの上でJRubyを動かすには、appengine-jrubyプロジェクト…

rails の unit test で一々 fixtures を更新しないようにするにはどうすればいいの?

という質問がありました。Fixtures代替として、 Machinist Factory Girl の2点、擬似データ作成用として、 Faker をお薦めしておきました。MachinistもFactory GirlもテストデータをRubyコードで書けます。好みで選んだら良いと思いますが、Fakerと組み合わ…

Railsで悲観的ロックできないの?

という質問がありました。ActiveRecordで楽観的ロックは、ロックをかけたいModelに、lock_version という列を追加すればできます。 migrationでは、 t.integer :lock_version, :default => 0 こんな感じ。で、ご質問の悲観的ロックですが、findでオプション…

f.error_messages みたいなのってformオブジェクトなしで使えないの?

という質問がありました。Viewの中で、 <% form_for :person, @person, :url => { :action => "create" } do |f| %> ... <%= f.error_messages %> ... <% end %> と書くと、そのformの対象となるActiveRecordオブジェクトのエラーを表示してくれる機能があり…

twitterでRailsの無償サポートやってます

twitter中毒なので、常時twitterクライアントが立ち上がってるわけですが、暇なときもそれなりにあるので、最近、"rails" という文字列を監視して、答えられる質問なら答えるようにしてます。無償というか、ボランティアです。なので全くの無保証です。流れ…

Railsでlayoutのyieldって複数書けないの?

元の質問は、layoutで、 <html> <head> <%= yield %> </html> とかしていいの?という質問でしたが、「あー、きっとが毎回違うんだな」と予想したのでタイトルの質問として回答しました。 元質問の答えとしては、「できる」ですが、閉じ忘れたら大変よろしくないので、yieldを複…

データベースがSJIS

ずーっと書こう書こうと思っていて忘れていた(汗「Rails 2.1 で Shift-JIS」という記事に、今でも結構アクセスあるようなので、書いておきます。データベース*だけ*SJISなのであれば、モデルの attr,attr= をオーバーライドしてその中でUTF-8とSJISの変換を…

確認画面のアクションのテンプレ

def confirm if request.post? @user = User.new(params[:user]) else request.put? @user = User.find(params[:id]) @user.attributes = params[:user] end if @user.valid? respond_to do |format| format.html # confirm.html.erb format.xml { head :ok …

2つのモデルを同時にsaveする時のテンプレ

class RecordInvalid < Exception; end def create @user = User.new(params[:user]) @profile = Profile.new(params[:profile]) User.transaction do if @user.valid? & @profile.valid? @user.save @profile.save respond_to do |format| format.html { re…

ビューで引数なしでnamed routeを使ったときdefault_url_optionsが無視されるのに対処

Rails2.1 で、ビューで引数なしの named route を使ったときdefault_url_options が無視されるバグがあった。対処法: class ApplicationController < ActionController::Base ... helper_method :default_url_options ... end してやれば、OK。 解説: name…

Rails 2.2 のテスト

RSpec の機運が上昇してるから、すわ Test::Unit の置き換えか?と思っていたんだけど、そうはならないっぽいね。 test "hoge is should be nil" do ... end って書けるようになるみたい。 def test_hoge_is_should_be_nil ... end に置き換えられる。 Ruby …

Rails 2.1 で Shift-JIS

Rails 2.1 で、DBもビューもSJISの場合に、旧来の方法が使えることを確認した。 おさらい。 config/database.yml で、encoding を sjis に設定。 development: adapter: mysql encoding: sjis database: sjisapp_development username: root password: socke…

MySQLのBIT型

Rails で MySQL の BIT型が扱えることを確認した。 要は String で渡ってくる。 こんな SQL を MySQL に食わせたときに、 DROP TABLE IF EXISTS `entries`; CREATE TABLE `entries` ( `id` int(11) NOT NULL, `flags` bit(8) NOT NULL, PRIMARY KEY (`id`) )…

jpmobile で index_mobile_softbank.html.erb だけじゃなく index.mobile.softbank.html.erb もいけるようにする diff ?

diff --git a/lib/jpmobile/hook_action_view.rb b/lib/jpmobile/hook_action_view.rb index 9592ef6..ae16737 100644 --- a/lib/jpmobile/hook_action_view.rb +++ b/lib/jpmobile/hook_action_view.rb @@ -39,13 +39,15 @@ class ActionView::Base #:nodoc…

Rails2.0 対応 rails.vim

$ diff -u .vim/plugin/rails.vim.old .vim/plugin/rails.vim --- .vim/plugin/rails.vim.old 2007-11-07 12:08:19.000000000 +0900 +++ .vim/plugin/rails.vim 2007-11-07 12:22:48.000000000 +0900 @@ -212,7 +212,7 @@ return s:sub(f,'.*\

link_to ... :method => :delete のCSRF

Rails 1.2 までの link_to って、:method => :delete の時、CSRF の危険があるよね。なもんで、security_extension プラグインを入れた上で、app/helper/application.rb に、 def delete_link_to(str, options = {}, html_options = nil, *parameters_for_me…

DB移行スクリプト

O さんにDB移行スクリプトを書いてもらったんだけど、スピードがやばい。やっぱ ActiveRecord インスタンスを作ると遅いのかなぁ? mysql-ruby を直で使ったほうがいいのかも。

Debian サーバーの Apache2(mod_fcgid) で Rails を動かす方法

Apache2 のインストールとかは略。 http://app.filn.local みたいな、サブドメイン使う感じで。 mod-fcgid モジュールとその Ruby ライブラリをインストール。 $ sudo aptitude install libapache2-mod-fcgid libfcgi-ruby /etc/apache2/mods-available/fcgi…

rcov

rcov 試し中。インストール: $ sudo gem install rcovRAILS_ROOT で、 $ rcov test/**/*_test.rbで RAILS_ROOT/coverage/ に結果の HTML 群が吐かれる。 けど、Rails 本体(ActiveRecordとか)もテスト吐かれて、ちょー大量のファイルが生成されるんですけど…

Capistrano 覚え書き

Rails で Capistrano 使うときのメモ。設定ファイルを生成: $ capify .config/deploy.rb に set :deploy_to, "/path/to/deploy/app" set :user, "subversionにアクセスできるユーザー名" を追加しておく。初回deployは、 $ cap -p deploy:setup $ cap -p de…

capistrano

Capiたん勉強中・・・ ドリコムには内製のデプロイツールがあって、それはそれは便利だった。しかし、うちにそれはないので、標準と思われる Capistrano の勉強を始めたのであった。まる。

Time#to_s :db

acts_as_authenticated のフィクスチャを覗いてたら便利なメソッドがあった: quentin: ... activated_at: <%= 5.days.ago.to_s :db %> ... いちいち Time#strftime("%Y-%m-%d %H:%M:%S") とかしないでいいみたい。ふへぇー

TDD & ペアプログラミング

今日は、TDD でペアプログラミングした。すごく安心。 TDD なのでリファクタリングもできて、さらに満足。 アジャイルというよりか、淡々と。 3メソッドの認証APIサーバが半日でできた。慣れればもうちょっと早くなるかな。 複数DB接続&JSON にトライしてや…