Archive

Posts Tagged ‘rails’

[Rails]HelperのメソッドをControllerで使う

July 30th, 2009 No comments
class HogeController << ApplicationController
  include HugaHelper
  ...
end

でHugaHelperのメソッドが(ついでにViewでも)使えるようになります

helper :huga
との違いはControllerでも使えるようになる点です
(helperで呼ぶとViewだけで使えるようになる)

Tags:

Rails更新後に500 internal server error | undefined method `rewind’

July 23rd, 2009 No comments

Passenger2.1.2でRailsを2.3.3にしてアクセスしたらこんなエラーが出てました
画面上の出力は500エラーだけでログに書いてあったのがundefined method `rewind’というエラー
これはRackが吐いてるエラーで、どうやらPassengerの古いverを使ってると遭遇するようです

undefined method `rewind’

ようはPassengerを最新にすればいいだけです

sudo gem install passenger
sudo passenger-install-apache2-module

そしてhttpd.confを修正してapache2を再起動したら直りました
#何故かsudo gem update passengerでは駄目でした;

Tags: ,

Cache周りの設定

July 23rd, 2009 No comments

Rails2.3.3のキャッシュ周りのお話
environments/development.rbなんかに記述します

# キャッシュを有効に
config.action_controller.perform_caching = true

# フラグメントキャッシュの保存先
# 最新のverではこういう指定方法になったそうです…数時間はまってました;
config.action_controller.cache_store = :file_store, "#{RAILS_ROOT}/tmp/cache"

# ページキャッシュの保存先
# ここを変えただけだとpageキャッシュが無効になります(mod_rewriteで変更先にキャッシュを読みに行くよう設定する必要があります)
# config.action_controller.page_cache_directory = "#{RAILS_ROOT}/tmp/cache/page"

verごとに微妙に仕様が変わっててげんなりしました…orz
今後確実にキャッシュは使っていくはずなのでしっかり覚えておきたいですね
キャッシュの詳しい使い方はまた今度まとめようと思います

Tags: ,

Rails2.3にupgradeしたらまずやること

July 23rd, 2009 No comments

RAILS_GEM_VERSIONを弄るのもそうでしょうが、
/app/controller/application.rbがapplication_controller.rbにファイル名が変わっているので注意が必要です
これは手動で書きかえなければなりません(rakeでアップグレードすることも出来るらしいですが未確認)
何故かproductionだと問題なく動くのでdevelopmentに戻してからしばらくはまってました;

RailsではコントローラはXXX_controller.rbというファイル名が標準なのに、application.rbだけそれに則っていないというのが問題だったみたいです
とりあえず旧形式でも動くようにして欲しかったと思いますが…

Tags:

expire_fragmentをcontrollerに限らずどこでも使うには?

July 23rd, 2009 No comments

フラグメントキャッシュを削除するためのメソッドです
普通はSweeperControllerを用意してModelの操作時に消す処理を書くらしいです

ActionController::Base.new.expire_fragment(key, :options => nil)

のような形で呼べばmodelだろうがscriptだろうがどこでも使えるようです
今回はscriptで使う必要が出たので調べてみました

How to call expire_fragment from Rails Observer/Model? – Stack Overflow

Tags: