Rails2.3.3で確認
[追記1] set_iphone_formatにviewファイルを振り分ける記述を追記
[追記2]振り分けれてなかったので修正…
RUBY:
-
# config/initializers/mime_types.rb
-
# 以下の行のコメントを外す
-
Mime::Type.register_alias "text/html", :iphone
-
-
###
-
# application_controller.rb
-
# iphone/ipod touchからのアクセスかどうか(ちょっと適当っぽい)
-
def is_iphone_request?
-
request.user_agent =~ /(Mobile\/.+Safari)/
-
end
-
-
# iphone/ipod touchだったらiphone向けに表示切換え
-
def set_iphone_format
-
if is_iphone_request?
-
request.format = :iphone
-
end
-
end
-
-
###
-
# hoge_controller
-
def index
-
...
-
respond_to do |format|
-
format.html
-
format.iphone
-
end
-
end
こんな感じにしとくと、iphoneからのアクセスでは
views/layout/application.iphone.html.erb
views/hoges/index.iphone.html.erb
を描画してくれます
#iphone用のディレクトリを用意してそこに*.iphone.html.erbを全部ぶっ込んで使うにはどうすればいいんだろう…
#iphone用コントローラとか作りたくないし;
iphone, rails
RUBY:
-
class HogeController <<ApplicationController
-
include HugaHelper
-
...
-
end
でHugaHelperのメソッドが(ついでにViewでも)使えるようになります
helper :huga
との違いはControllerでも使えるようになる点です
(helperで呼ぶとViewだけで使えるようになる)
rails
SQLではWHERE句で検索条件を指定しますが、その際にNULLを扱う場合について調べました
というのも、普通に
SQL:
-
SELECT * FROM users WHERE clm = NULL
だと取り出せません
SQL:
-
SELECT * FROM users WHERE clm IS NULL
とすることで取り出せます(否定はIS NOT NUL)
sql
Passenger2.1.2でRailsを2.3.3にしてアクセスしたらこんなエラーが出てました
画面上の出力は500エラーだけでログに書いてあったのがundefined method `rewind'というエラー
これはRackが吐いてるエラーで、どうやらPassengerの古いverを使ってると遭遇するようです
undefined method `rewind'
ようはPassengerを最新にすればいいだけです
TEXT:
-
sudo gem install passenger
-
sudo passenger-install-apache2-module
そしてhttpd.confを修正してapache2を再起動したら直りました
#何故かsudo gem update passengerでは駄目でした;
passenger, rails
Rails2.3.3のキャッシュ周りのお話
environments/development.rbなんかに記述します
RUBY:
-
# キャッシュを有効に
-
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
今後確実にキャッシュは使っていくはずなのでしっかり覚えておきたいですね
キャッシュの詳しい使い方はまた今度まとめようと思います
cache, rails