rails

RubyGemsをダウングレードする 

何回か同じこと繰り返してるのでここに書いておきます。Rails 2.3.5で運用しているプロジェクトがあります。(諸事情により) 最近のバージョンのRubyGemsでrakeを実行すると、 uninitialized constant ActiveSupport::Dependencies::Mutexが出たりします。 …

RSpecでApplicationControllerのテストを書く

初めて書くにあたって、なにか特別なことしなきゃいけないんだろうなーと思っていたら、ズバリな紹介がありました。rescue_action_in_public の RSpec を書く 自分のこの環境では、 ruby 1.8.7 (2010-01-10 patchlevel 249) Rails 2.3.3 rspec (1.3.0) rspec…

GmailからIMAPで取ったメールの添付ファイルを取ろうとしたらTMailでエラーになる

環境 Ruby 1.8.7 Rails 2.3.8 #attachmentsでエラーが出る tmail = TMail::Mail.parse(mail_data.attr['BODY[]']) @read = tmail.attachments #ここ こんなエラー undefined local variable or method `jp2CharContext' for #<CharDet::SJISContextAnalysis:0x1e35b38> RubyForgeでこの件は報告されて</chardet::sjiscontextanalysis:0x1e35b38>…

モデルのバリデーションのテストをダラダラ書きたくない

RSpecでモデルのバリデーションのテストをダラダラ書かないで済むうまいやり方ってあるんでしょうか? ダラダラ書かないで済む方法を模索してみました。 spec_helper.rbにこういうのを追加します。ここではバリデーションの種類はverify_hours(入力値が24…

integration testではAuthenticatedTestHelperのlogin_asが使えない

RestfulAuthenticationプラグインで認証しているアプリのintegration testを書こうとしました。 プラグインに同梱されているAuthenticatedTestHelperのlogin_asというログインのヘルパメソッドを使ってみたのですが、なぜか認証できてない。AuthenticatedTes…

ActiveRecordをちゃんとcloneできるようにするパッチ

があることをたまたま見つけました。 Instantiate through initialize_copy when cloning ActiveRecord object cloning これはこのあとどうなるんだろう・・ActiveRecord::Base#cloneは本当はcloneではなかったらしい

ActiveRecord::Base#table_exists?

>> Article.table_exists? => true >> class Comment < ActiveRecord::Base >> end => nil >> Comment.table_exists? => false

ActiveRecord::Base#cloneは本当はcloneではなかったらしい

freezeはコピーされない Object#clone >> class A >> end => nil >> a = A.new => #<A:0x2480948> >> a.taint => #<A:0x2480948> >> a.freeze => #<A:0x2480948> >> a.tainted? => true >> a.frozen? => true >> b = a.clone => #<A:0x244d55c> >> b.tainted? => true >> b.frozen? => true ActiveRecord::Base#cl</a:0x244d55c></a:0x2480948></a:0x2480948></a:0x2480948>…

Edge Rails環境をつくる

このあたりに感化されてとりあえずEdge Railsを入れてみることに るびま 0027 号 巻頭言 Railsエコシステムの研究 とりあえずRailsプロジェクトをつくる # rails edge_rails venderディレクトリ以下にgithubからrailsのコードを落とす # cd edge_rails # cd …

Joruri

Joruriとは、Japan Originated Ruby-based RESTful and Integrated CMS(日本から生み出され、ルビーをベースにし、REST規約に従った、統合されたCMS)という意味から名づけられ、更には、人形浄瑠璃の三人遣いのように、すばらしいホームページを裏で支える…

なんちゃらlogicが気になる

#176 Searchlogic #170 OpenID with Authlogic #160 Authlogicbinarylogic

Rails on GAE/Jを試してみたときの過程メモ

やっぱりRailsを動かしたいです。 迷走開始 まず、こちらとかこちらとかをマネさせてもらおうとしました Google App Engine で Rails を動かしてみる JRuby on Rails on Google App Engine ところが、手順どおりにやっているつもりなのにファイル数が1000越…

Scaling Rails Episode #5 - Advanced Page Caching

Page Cacheのもう少し詳しい話 Pagination will_paginateでページネートしてるときpage cacheしてるとページリンクを押しても遷移しない http://127.0.0.1:3000/posts?page=2のようなクエリストリングをページキャッシュでは扱えないから クエリストリングな…

場当たり的にJpmobileをRails2.3に対応してみる(2) trans_sid

Jpmobileのtrans_sidをrails2.3で無理矢理動かしてみる rails2.3ではセッション管理がrackのmiddlewareで入るのでCGI::Sessionをごにょごにょしなくてすむのでカット session_optionsのcookie_onlyはmiddlewareのインスタンス変数になるけども、初期化時に固…

Scaling Rails Episode #3 - Cache Expiration

キャッシュ失効の話前回からの続き Expiring Caches controllerのupdate,destroy,createの各メソッドにexpire_pageを書くのはDRYじゃないなー コントローラーのafter_filterでexpire_pageをまとめたメソッドをまとめてみた appがbiggerになると複数controlle…

Jpmobileのtrans_sid(2)

Rails2.2上では dispatch_cgiでCGIオブジェクトをつくるときに actionpack/lib/action_controller/dispatcher.rb def dispatch_cgi(cgi, session_options) if cgi ||= self.class.failsafe_response(@output, '400 Bad Request') { CGI.new } @request = Cgi…

Ruby on Rails 2.3 Release Notes Rackとの統合

Session Storeは'lazy'に処理されるようになりました。request内でsessionオブジェクトにアクセスしない場合、セッション処理(cookie読み込み、memcacheからの読み込み、ActiveRecordからの検索など)は行われません。 http://webtama.jp/series/railstips/…

Jpmobileのtrans_sid

jpmobileのREADME === セッションIDの付与(Transit SID) ==== Cookie非対応携帯だけに付与する class MyController trans_sid end ==== PCにも付与する class MyController trans_sid :always end PC向けのWebアプリをやってると縁がありませんが cookieに対…

場当たり的にJpmobileをRails2.3に対応してみる

Jpmobileの 携帯電話の識別 携帯電話viewの自動振分け というところについて環境は Jpmobile 0.0.4 Rails 2.3.2 Ruby 1.8.6 リクエストの拡張 Jpmobileはリクエストを拡張して、各リクエストからどのキャリア/機種であるのかを分かるようにしている 拡張し…

Rails 1.2.3でOracleでConnectionNotEstablishedが発生する場合は?

# rak ConnectionNotEstablished /opt/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/ 19| class ConnectionNotEstablished < ActiveRecordError #:nodoc: 251| # * +ConnectionNotEstablished+ -- no connection has been established. Use <tt>establ</tt>…

Get chance and Rack

Rails 2.3でRackが統合されました サーバー起動からリクエスト処理までの流れはこんな感じに(サーバー:mongrel) RackでMutexロックしてます(threadsafe無効状態で) Rails 2.3.2 server.rb Rack::Handler::Mongrel#run Mongrel起動! Mongrel::HttpServer…

Jpmobile 0.0.4がRails2.3.2で動かなくなってしまった

# ruby script/server => Booting Mongrel => Rails 2.3.2 application starting on http://0.0.0.0:3000 /opt/local/lib/ruby/gems/1.8/gems/activesupport-2.3.2/lib/active_support/dependencies.rb:440:in `load_missing_constant': uninitialized const…

Rails界のシティーハンター(Sweeper)

Railsには古くからキャッシュ機構があります。 キャッシュを失効させる便利な機能としてSweeperがあります。古くから Sweeperはこんなの class PostsSweeper < ActionController::Caching::Sweeper observe Post def after_save(post) clear_posts_cache(pos…

(Scaling Rails)Episode #2 - Page Caching

http://railslab.newrelic.com/2009/01/22/page-caching Page Caching みんなが1つのページの同じ情報を見るケースに有効 Page Cacheのやり方 config.action_controller.perform_cachingをtrueにする コントローラーにキャッシュしたいページのアクションを…

Scaling Rails Episode #1 - Page Responsiveness

http://railslab.newrelic.com/2009/01/22/page-responsiveness How do you measure responsiveness? firefoxのアドオンfirebugをつかってみよう netタブの情報をみてみよう safariでもdevelop menuを有効にすれば同じ情報はみれるよ How do you improve res…

Jpmobileのrake updateでエラーになったときのメモ

# rails -v Rails 2.2.2 # ruby -v ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-darwin9.2.2] # ruby script/console Loading development environment (Rails 2.2.2) >> Jpmobile::VERSION::STRING => "0.0.4"こういう構成で、$RAILS_ROOT/vender/plugin…

ruby-oci8セットアップ時にはLD_LIBRARY_PATHとNLS_LANGを必ず設定する

NLS_LANG忘れてた。Rails起動したらみたことないORAエラーがでてあせった。

メモリリーク

Ruby自体のメモリリーク RMagicのメモリリーク ruby-get-textのメモリリーク DBでセッション管理するとメモリリーク ロードしたクラスをキャッシュしてないとメモリリーク(developmentモード) around_filterでreset_sessionするとメモリリーク などなどあ…

Session Restore Error

APサーバー再起動時にSession Restore Errorに遭遇した。 セッションオブジェクトにモデルクラスを入れてたからだ。 これまでやったJavaのWebアプリではセッションはメモリに入れてたからこういう問題に出会わなかったなあ・・ HowtoAvoidSessionRestoreErro…

session_storeにactive_record_storeを使う

Rails2系にて config/environment.rbをへんしゅう config.action_controller.session_store = :active_record_store テーブルを作成 # rake db:sessions:create # rake db:migrate app/controllers/application.rbをへんしゅう protect_from_forgery :secret…