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…

daemon generator プラグイン

Announcing daemon_generator あとで試す。RailsCastsで紹介されていた。 #129 Custom Daemon

fixture sets プラグイン

Fixture Sets for Rails あとで試す。RailsWayに載ってた。

open_id_authenticationを使ってOpenIDのフンイキを感じてみる

# sudo gem install ruby-openid # script/plugin install open_id_authenticationREADMEが頼り。なんか不親切。 rails2.2.2では認証処理でエラーになった undefined method `relative_url_root' for #<ActionController::CgiRequest:0x21dbf44> rails2.1.1では動作した。 OpenId.ne.jpでもらえるよう</actioncontroller::cgirequest:0x21dbf44>…

Rails 2.2のi18nライブラリ、i18n_generators を試す

参考 楽天テクノロジーカンファレンス2008でLTしてきました プラグインとして入れた # ./script/plugin install git://github.com/amatsuda/i18n_generators.git 日本語化するときにエラった # ./script/generate i18n ja exists config/locales identical c…

rails 2.2 + jruby + jetty = win

rails 2.2 + jruby + jetty = winより 超意訳 Rails2.2でスレッドセーフになったけど、こうなるとネイティブスレッドが使えるJRubyがぜったいいいよ。アプリケーションサーバーはglassfishよりかjettyがいいね(もうすぐjettyは7がリリースされるし)。 warb…

DrySQLライブラリ (「実践Rails」4章 データベース)

ドライな野郎 DrySQLを使うと、モデルにvalidationを自前で書かなくてもスキーマ情報から自動生成してくれる。こんなUsersテーブルがあって、 mysql> describe users; +------------+--------------+------+-----+---------+----------------+ | Field | Typ…

『実践 Rails』 4章 データベース 〜 MVCC 〜

MVCC PostgreSQLの同時処理のサポートは、MySQLのものよりもずっと成熟している。PostgreSQLは、行レベルのロックよりもさらに高度なMVCC(Multiversion Concurrency Control)をサポートしている。 このあとで、MVCCの説明がある。 Rails本でMVCCのことを説明…

Rails 2.2.2でMySQL使うにはドライバを更新しないといけないみたいですよ・・

今度はmigrationで落ちた! # rake db:migrate (in /Users/sogo/rails/hellorails) !!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql. rake aborted! no such file to loa…

Rails 2.2.2はRubyGems 1.3.1以上を要求しますが・・

Rails 2.2.2をgem updateで入れて、なんか適当にプロジェクトつくってみると # ruby script/generate model --help Rails requires RubyGems >= 1.3.1 (you have 1.2.0). Please `gem update --system` and try again.といわれたので # sudo gem update --sy…

そうみたいです⇒[http://d.hatena.ne.jp/moro/20081118/1226977015:title=Webratがスゴい(続:Cucumberがアツい)]

これはおもしろそうだ!

ruby-gettextでrailsを日本語化

覚えられないのでメモ。 大ざっぱな自分用なので詳しくは本家を見た方がいいです→Ruby on RailsでRuby-GetText-Packageを使う railsは2.1.1 config/environment.rbを編集 $KCODE='u' require 'jcode'を書くRails::Initializer.runのブロックの中に config.ge…

スレッドセーフな Rails って

スレッドセーフな Rails ってどういうこと? wktk

Rails製のE-commerceシステム SubstructとSpree

RoRの高機能ECシステム「Substruct」 RailsベースのEコマースシステム「Spree」とりあえずどちらも起動させるとこまでは インストール Substructの方が楽だった Spreeはrake gems:installがなぜかうまくいかず手動でgemパッケージをインストールしてなんとか…

Josh Peek officially joins the Rails core

Josh Peek officially joins the Rails core Josh PeekさんがRails2.2をスレッドセーフにするためにやってきた!ヤァヤァヤァ! なかなかのイケメンである http://rubyonrails.org/core

rails_ext.rbのコード辺

rails_ext.rbのコード辺ほっこりさせてもらいました。

Ruby on Rails 2.1 What's new 日本語版

http://www.box.net/index.php?rm=box_download_shared_file&file_id=f_169715856&shared_name=s90wjdickkめも

ActiveRecordのconditionsを綺麗に書くTips2つ

ActiveRecordのconditionsを綺麗に書くTips2つ なんかよさそうだーでもflatten_conditionsは自動で呼ばれるんすか?どこで引っ掛けるんだろう・・

Ragel

A custom HTTP 1.1 parser written based on the RFC standard and using an ABNF dump thankfully put online by someone. The parser is written using Ragel and is written C and Java as Ruby extension. mongrelのHTTPパーサはRagelというもので書かれ…

Passenger入れたけどRailsアプリが起動できない(soap4r絡み)

Error message: uninitialized constant XSD::NS::KNOWN_TAG Exception class: NameError config/environment.rbのアタマには require 'rubygems' gem 'soap4r' を書いてあるのになあ。

mod_rails入れた

Passenger(mod_rails for Apache)を入れたこちらの説明が詳しい Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用