[Rails]HelperのメソッドをControllerで使う
class HogeController << ApplicationController include HugaHelper ... end
でHugaHelperのメソッドが(ついでにViewでも)使えるようになります
helper :huga
との違いはControllerでも使えるようになる点です
(helperで呼ぶとViewだけで使えるようになる)
class HogeController << ApplicationController include HugaHelper ... end
でHugaHelperのメソッドが(ついでにViewでも)使えるようになります
helper :huga
との違いはControllerでも使えるようになる点です
(helperで呼ぶとViewだけで使えるようになる)
Passenger2.1.2でRailsを2.3.3にしてアクセスしたらこんなエラーが出てました
画面上の出力は500エラーだけでログに書いてあったのがundefined method `rewind’というエラー
これはRackが吐いてるエラーで、どうやらPassengerの古いverを使ってると遭遇するようです
ようはPassengerを最新にすればいいだけです
sudo gem install passenger sudo passenger-install-apache2-module
そしてhttpd.confを修正してapache2を再起動したら直りました
#何故かsudo gem update passengerでは駄目でした;
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
今後確実にキャッシュは使っていくはずなのでしっかり覚えておきたいですね
キャッシュの詳しい使い方はまた今度まとめようと思います
RAILS_GEM_VERSIONを弄るのもそうでしょうが、
/app/controller/application.rbがapplication_controller.rbにファイル名が変わっているので注意が必要です
これは手動で書きかえなければなりません(rakeでアップグレードすることも出来るらしいですが未確認)
何故かproductionだと問題なく動くのでdevelopmentに戻してからしばらくはまってました;
RailsではコントローラはXXX_controller.rbというファイル名が標準なのに、application.rbだけそれに則っていないというのが問題だったみたいです
とりあえず旧形式でも動くようにして欲しかったと思いますが…
フラグメントキャッシュを削除するためのメソッドです
普通はSweeperControllerを用意してModelの操作時に消す処理を書くらしいです
ActionController::Base.new.expire_fragment(key, :options => nil)
のような形で呼べばmodelだろうがscriptだろうがどこでも使えるようです
今回はscriptで使う必要が出たので調べてみました
How to call expire_fragment from Rails Observer/Model? – Stack Overflow