【Ruby】Ruby on Rails Part7
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/04/30(木) 23:07:27ID:???http://pc11.2ch.net/test/read.cgi/php/1224838013/
■参考サイト
<英語>
本家:http://www.rubyonrails.org
API document:http://api.rubyonrails.com/
開発者のblog:http://weblog.rubyonrails.org/
参考wiki:http://wiki.rubyonrails.org/rails
<日本語>
Rails' wiki: http://wiki.fdiary.net/rails/
■参考スレ(プログラム板)
Rubyについて Part 35
http://pc12.2ch.net/test/read.cgi/tech/1238194350/
Ruby 初心者スレッド Part 27
http://pc12.2ch.net/test/read.cgi/tech/1238632943/l50
0755nobodyさん
2009/07/31(金) 16:31:29ID:???map.resources :payments
map.connect ':controller/:action'
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
この場合、例えば http://localhost:3001/payments/list を GET でアクセスできないのでしょうか?
Couldn't find Payment with ID=list
というエラーがでます。
http://localhost:3001/payments/list/0
とやればアクセスできるようです。
0757nobodyさん
2009/07/31(金) 17:43:49ID:???で定義されるルーティングが先にマッチするからでしょう。
rake routes でルーティングを確認しましたか?
0758755
2009/07/31(金) 18:15:37ID:???ありがとうございます。
rake routes の結果より
payment GET /payments/:id(.:format) {:controller=>"payments", :action=>"show"}
が優先的にきいてるようです。
:action => "list" が存在しない場合だけ上記が適用されるようにしたいのですが、可能でしょうか?
0759nobodyさん
2009/07/31(金) 18:28:39ID:???の意味がよくわかりませんが、
map.resources :payments
より前に
map.connect '/payments/list' { :controller => "payments", :action => 'list' }
を書くというのが、やりたいことじゃないかと思います。
controller が payments だけじゃなくて、しかも list メソッドが定義されていない場合は
マッチしないでくれ、という場合は…
:id のフォーマットを正規表現で限定する機能が使えるかもしれません。
0760754
2009/07/31(金) 18:39:13ID:???> ↓こちらではSubject modelでacts_as_authorization_subjectを書くとかなっててどっちなの?という。
メインの関連するモデル(Authlogicの場合User)は acts_as_authorization_subject の方でいいみたいです。
> それと、結合テーブル作らないといけないみたいなのんですが、
> migrationするroles_usersはモデルも作る必要あるんでしょうか?
必要なかったです。
lib/ruby/gems/1.8/gems/be9-acl9-0.10.0/lib/acl9/model_extensions.rb などを見ればわかるのですが、
acts_as_authorization_subject で、
has_and_belongs_to_many :roles, :class_name => role
を呼んでおり、(Authlogicの場合)UserとRoleを多対多で関連付けているみたいです。
しかし、この多対多のhas_and_belongs_to_many ですが、下記サイトを見ると
Ruby on Rails - ActiveRecord - ? ありえるえりあ
http://dev.ariel-networks.com/articles/workshop/rails-activerecord
> * has_and_belongs_to_many (HABTM)
> :through 登場以降の存在がいまいち不明なので無視します。
とかあるのですが、これって今は使わないんでしょうかね。
とにかく、おさわがせしました。
ありがとうございました。
0761nobodyさん
2009/07/31(金) 19:15:26ID:???has_many :throughだと、テーブルの関連自体をオブジェクトとして
扱えるので何かと便利。
0762nobodyさん
2009/07/31(金) 20:33:56ID:TkoSwHP8paymentsって結構一般的なんかな。
0763755
2009/07/31(金) 22:15:57ID:???やはりそうするしかないですね
ありがとうございます
0764nobodyさん
2009/08/03(月) 08:55:54ID:OSViAr5uクッキーストアなセッションを盗聴もしくはXSSによって盗まれた場合、
そのセッションを無効にするには secret を再生成するしかないという理解なのですが、
あってますでしょうか?
0765nobodyさん
2009/08/03(月) 10:49:14ID:???番号札取られて順番待ちに横入りされまくってる状況をなんとかしないと。
0766nobodyさん
2009/08/03(月) 11:03:10ID:???そのセッションをと書いてあるだろ。xss気づいた時点で直すだろう。ただ直しても過去のセッションは生きてるから、過去のセッションを無効にしたいってことだろ。そもそも偉そうに言う前に答えてからにしろ。
で、答えは、私も解らん。
もちろんsecret変えれば、無効になるが、それ以外にないかって言われると…。
0767764
2009/08/03(月) 11:50:48ID:???レスありがとうございます。
secret を再生成するとログイン中のユーザーを強制ログアウトしてしまうので、
それ以外の方法はないのかなーと思いまして。
そもそもクッキーが盗まれないようにしろよって話なんですが
0768764
2009/08/03(月) 12:03:13ID:???XSS に対して => アプリ側で穴をふさぐ
盗聴に対して => 通信内容の暗号化 => 全面的にHTTPS
ということになると思うんですが、世の中見渡しても全面的にHTTPS な
Webサービスって少ないですよね。これって
そこまでせんでもええやろ
ってことなんでしょうか?
なんだか XSS に対してはやたらうるさく言われる割に、
盗聴されるとクッキー盗まれるからHTTPSにしなさいってのは(XSSと同じ被害が出る割に)
随分とトーンが弱い気がします。
0769nobodyさん
2009/08/03(月) 12:40:19ID:???アクセス数が超多い人気サイトだと、SSLアクセラレータを前に置いたりするが、
それでも処理が捌けなかったり、そもそもそんな金があるなら別のところに使いたい。
携帯サイトだと、毎回 Https のダイアログがあるのは嫌われる。
0770764
2009/08/03(月) 13:01:19ID:???> Https だと web サーバに負荷が掛かる
> 携帯サイトだと、毎回 Https のダイアログがあるのは嫌われる。
お金や個人情報を扱うクリティカルな処理でない限り
コスト・利便性が優先ってことでしょうか。
その辺のバランス感覚がよくわからんす。
盗聴のリスクを過大評価してるんですかね?>自分
0771769
2009/08/03(月) 13:07:16ID:???> お金や個人情報を扱うクリティカルな処理でない限り
> コスト・利便性が優先ってことでしょうか。
まさにバランスだが、そこら辺は難しい。
どこかのセミナーで聞いたけど、セッションハイジャックがおきても、
本当に致命的な情報は盗まれないように設計すべき、というのを聞いた。
たとえばヤフー(さらにたとえればヤフオク)は、入札する直前に、もう一度パスワードを入力させる。
パスワード変更画面へアクセスするときにもパスワードを入力させる。
つまり、攻撃者がクッキーを盗んでセッションに入り込んだら、何でも出来てしまうようではダメ
(ユーザの情報を、何でもセッションに入れてしまうようではだめ)ということ。
ちゃんと考えられたサイトでは、ログインとか決済画面は Https で包んでいても、そうでない画面は
Http だったりする。
0772764
2009/08/03(月) 13:43:20ID:???> ちゃんと考えられたサイトでは、ログインとか決済画面は Https で包んでいても、
> そうでない画面は Http だったりする。
自分が利用しているサービスは大抵そうなってますね。
そのことは実は前から気になってて、いくらログインが https でもこれじゃ
セッション乗っ取られるやんと思ってたのですが、これって仮にセッションが
乗っ取られても(被害0という訳ではないけれども致命的という訳でもない)
なんとかフェールセーフだからこうしますってことなんですね。
なんつーか、そういうもんなんですね、世の Webサービスというのは。
勉強になりましたっす。
0773764
2009/08/03(月) 14:37:17ID:???> クッキーストアなセッションを盗聴もしくはXSSによって盗まれた場合、
> そのセッションを無効にするには secret を再生成するしかないという理解なのですが、
> あってますでしょうか?
自己レス
ログインの度に更新されるトークンをユーザーのモデル属性に追加して、
それをセッションハッシュに含めるようにすれば、例えセッションクッキーを盗まれても
正規ユーザーのログインと同時に無効にできますね。
0774nobodyさん
2009/08/04(火) 00:02:32ID:???正規ユーザのログインを阻害しておけば、いつまでも取得したクッキーで成り済ませるというのもどうかと。
0775764
2009/08/04(火) 00:18:20ID:???> 正規ユーザのログインを阻害しておけば、いつまでも取得したクッキーで成り済ませる
パスワードとメールアドレスの変更さえ阻止できれば正規ユーザーのログインが
阻害されるということはないという認識なんですけど、この場合のログインの阻害とは
物理的にログインできない状態にさせるということですか?
つまり、クッキーを盗んだ犯人が正規ユーザーの知り合いかなんかで、言葉巧みに
しばらくそのサービスにログインしないように仕向けるとか
0777nobodyさん
2009/08/04(火) 16:17:56ID:???functional test はどうやればいいの?
0778nobodyさん
2009/08/04(火) 17:45:14ID:???0779755
2009/08/05(水) 00:30:31ID:???と、数字を20まで表示させたいのですが、ループなどを組んで指定するにはどうやったらいいのでしょうか?
0780nobodyさん
2009/08/05(水) 00:50:11ID:???opts = {}
(1..20).each {|i| opts[i] = i }
みたいな感じでハッシュを作ってそれを select に渡したら?
0781nobodyさん
2009/08/05(水) 01:20:19ID:???Hash[(1..20).map{|e|[e,e]}]
や
(1..20).inject({}){|r,e| r[e]=e;r}
なら、その場に書ける。
0784783
2009/08/05(水) 09:04:35ID:???ごめんなさい。
0785nobodyさん
2009/08/05(水) 11:05:53ID:???みなさまどうもありがとうございます
教えていただいた方法全て試したのですが、
<option value="16">16</option>
<option value="5">5</option>
<option value="11">11</option>
<option value="17">17</option>
のような結果になりうまくいきません。
なんか難しそうです。
0786nobodyさん
2009/08/05(水) 11:27:13ID:???select 'foo', 'bar', 1..20
でたぶんできます。
確かに select の第3引数は Enumerable なら何でもいいけど、
基本的には Hash じゃなくて Array の Array を渡すものと考えといた方が良いよ。
0787nobodyさん
2009/08/05(水) 11:33:58ID:NCOUlOL5バイト数の方がよかったんだけど・・
この仕様しらなかったせいでバリーデーション不備のまま本番にあげちゃってちょん切れたデータを多数テーブルに格納してしまった・・
0788nobodyさん
2009/08/05(水) 11:57:44ID:???0789780
2009/08/05(水) 12:16:04ID:???ごめん。ハッシュじゃそりゃダメだわw
>>786 みたいにするか
[[label1, value1], [label2, value2], ...]
な配列を渡すんだ
http://api.rubyonrails.org/
0791nobodyさん
2009/08/05(水) 16:35:58ID:???アクション(indexとかshowとか)に対して、before_filterで、実行予定のア
クションが
- コレクションのアクション(index, newなど)
- メンバーのアクション(show, destroyなど)
のどちらなのかを判断する方法はないでしょうか。
標準のscaffoldで作られるもの以外にも対応したいので、
- index/new/createならコレクション
- show/edit/update/destroyはメンバー
という判定は避けたいです。
idパラメータの有無で判断するのが簡便に思えますが、誤判定の可能性
はないでしょうか。
0794nobodyさん
2009/08/06(木) 04:44:08ID:???insertしたりとかでけんのですかね?
いろいろと試してはみたのですが。
insert_html 'hoge', :bottom, :js => 'fuga' とか。
0796nobodyさん
2009/08/06(木) 08:48:10ID:???それをどんどん判定条件に加えていけばいいような。
0797nobodyさん
2009/08/06(木) 11:23:04ID:???アクションの実際の動作によるとしかいえないので、アクションの動作を
調べないかぎり誤判定はありえるでしょう。
つまりはコレクションかメンバーかは規約によるので、restという規約なら
アクションは予め決まっているので、それをaction_nameで判断すればいいのでは
ないでしょうか。
restのアクション以外を実装するケースを判断するには、そのアクションの対象が
コレクションかメンバーなのかは実装者にしかわからないでしょう。
0798nobodyさん
2009/08/06(木) 13:22:51ID:???どうかと思ったが、その場でルーティング判定コードに変換されたらど
こにも残ってないな。
0799nobodyさん
2009/08/06(木) 19:37:35ID:???文字化けしないようにするにはどうしたらいいんでしょうか?
config/enviroment.rbにて、
config.action_mailer.default_charset = 'iso-2022-jp'
はすでに設定してあります。
下記サイトによると、2.3では大丈夫?みたいにあるのですが、大丈夫でないみたい・・・
Ruby on Rails - メール送信 - gendosuの企画開発室
http://gendosu.ddo.jp/redmine/wiki/1/%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%81%E4%BF%A1?export=txt&version=14
環境:Rails 2.3.2 Ruby 1.8.7
0800nobodyさん
2009/08/06(木) 22:34:44ID:U5nTdGUe0801nobodyさん
2009/08/07(金) 01:36:44ID:???http://www.atmarkit.co.jp/fnetwork/rensai/netpro03/netpro01.html
0802799
2009/08/07(金) 04:13:16ID:???UTF-8になっているみたいでした…
>>801
よくよんでみます
ActionMailerのソースを見る限り、大丈夫じゃない感じだったので(元になったTMailはルーチンは残ってるんですが)、
下記サイトを参考に、gettext_rails入れてみます。
Rails2.3.2でiso-2022-jpのメールを送りつつテストも通るようにしてみた
http://doruby.kbmj.com/tn_on_rails/20090420/Rails2_3_2_iso-2022-jp_
2.3では大丈夫というのはどこの情報だろう…。リリースノートみても特に記述はない気がします
Ruby on Rails 2.3 Release Notes
http://guides.rubyonrails.org/2_3_release_notes.html
0803799
2009/08/07(金) 04:24:05ID:???日本語化はi18n使いたいし、メールのためだけにgettext入れるのもなんだかなーと思ってて調べていたら、
ActionMailerJaというのを見つけました。2.3にも対応しているみたいです。試してみようと思います。
ActionMailerで日本語のメールを送る方法 - yuum3のお仕事日記
http://d.hatena.ne.jp/yuum3/20090624/1245833142
ActionMailerJa - imishin.com
http://blog.imishin.com/projects/ruby/actionmailerja/
とりあえず、ありがとうございました。
0804nobodyさん
2009/08/07(金) 17:05:39ID:???form_forの
<%= f.error_messages :header_tag => :h3 %>
のようなこういったコードを共通化したいのですが、どうするのがスマートでしょうか?
ヘルパーに引数でfを渡すのも考えたのですが、できれば、既存の
<%= f.error_messages %>
で自動的に
<%= f.error_messages :header_tag => :h3 %>
相当を呼ぶようにしたいのですが、よいはっく方法はないでしょうか?
0805nobodyさん
2009/08/07(金) 18:18:25ID:???error_messagesを再定義するようなモジュールをmixinすればいいんじゃない?
0806804
2009/08/08(土) 10:15:54ID:???ありがとうございます。
うまいこと、再定義する方法ってないものでしょうか?
下記のようにすると、stack too deep?とか言われてしまいます。
module ActionView::Helpers
class FormBuilder
# デフォルトオプション付きの f.error_messages
alias :old_error_messages, :error_messages
def error_messages(option = {})
old_error_messages({:header_tag => :h3}.merge(option))
end
end
end
今はとりあえず、別名で定義してみてあります。(grep置換してしまえばいいと言えばいいのですが…)
module ActionView::Helpers
class FormBuilder
# デフォルトオプション付きの f.error_messages
def my_error_messages(option = {})
error_messages({:header_tag => :h3}.merge(option))
end
end
end
0807804
2009/08/08(土) 10:17:37ID:???以前のform_forを直接読んでやればよいのか…。
ちょっとやってみます。
0809nobodyさん
2009/08/08(土) 12:47:11ID:???class HogeHelper
module HogeBuilder
def error_messages options
super {:header_tag => :h3}.merge{option}
end
def form_for record_or_name_or_array, *args, &proc
super do |f|
f.extend HogeBuilder
yield f
(ry
というのを考えてたんだが。
0810nobodyさん
2009/08/08(土) 12:52:10ID:???0811nobodyさん
2009/08/08(土) 13:21:01ID:???それはそれでRuby的だよね
0812nobodyさん
2009/08/10(月) 15:53:57ID:???障害があったときにもう1台に切り替えるってできるのですか?
DBa, DBbで、普段はDBaのみに更新、参照し、DBaに障害があったら
DBbに更新、参照みたいな。
JavaのときはJDBCの接続のときに以下のようにするとできたんだけど、
Railsでもやりたいのです。
jdbc:mysql://DBa,DBb:3306/testdb
Properties prop = new Properties();
prop.put("autoReconnect", "true");
prop.put("roundRobinLoadBalance", "false");
prop.put("failOverReadOnly", "false");
....
0813nobodyさん
2009/08/10(月) 22:13:10ID:???0814nobodyさん
2009/08/11(火) 01:25:21ID:VNj7FetZRailsで扱えるDB(Mysql, PostgreSQL, Oracle, ...)が
812のいう機能をサポートしていればできる。
んで、大体のDBでできる。
0815812
2009/08/11(火) 11:43:12ID:???返答ありがとうございます。
MySQLでお互いをMaster&Slaveにして、デュアルマスタにしているのですが、
片方死んだ時に切り替えたく思っています。
スレ違いになりそうですが、813さんと814さんの言ってることは
バーチャルIPかなんか振っておけってことでしょうか(DBサーバに)?
0816nobodyさん
2009/08/11(火) 15:52:45ID:???・migrationに書く
・script/以下にスクリプト置いて、script/runnerで実行させる
migrationに書く方法だと、migrate後にdevelopment DBに db:fixtures:loadとかして開発用に初期DB入れようとすると、
migrationで入れたDBデータがぶっ飛んでしまいませんか?
0817nobodyさん
2009/08/12(水) 08:25:01ID:???fxck you の略?
0818nobodyさん
2009/08/12(水) 11:09:05ID:???GIMPのScript-fuあたりが嚆矢かな。
0819nobodyさん
2009/08/12(水) 11:50:53ID:???〃Λ_Λ
( ・∀・)
┏┓⊂ ⊂_)
`/ ̄ ̄ ̄ ̄ ̄ ̄/|
| ̄ ̄ ̄ ̄ ̄ ̄| |
|| ̄ ̄ ̄ ̄ ̄|| |
|| ┃┃┃ || |
|| ┃┗┫ || |
|| ┃ ┃ || |
||_____||/
└──────┘
0820nobodyさん
2009/08/12(水) 12:22:42ID:???ttp://www.catb.org/~esr/jargon/html/F/suffix-fu.html
直接の用法は「熟練の技」みたいな感じだが、
プラギンに使ってるのはおそらくノリというか面白半分だろうな。
0821nobodyさん
2009/08/12(水) 19:16:22ID:???db:fixtures:load RAILS_ENV=production
でいいんじゃないかと思います。
初期ユーザーなどは開発用にも必要なものだと思いますので、
それぞれの環境ごとに、しかし同じ方法でやるのがいいと思います。
0822nobodyさん
2009/08/15(土) 02:11:01ID:3etX9jN1Master 192.168.1.1, 192.168.1.2
Slave 192.168.1.3
こんな風にIP振っておいてクライアントは192.168.1.1にアクセスする。
SlaveがMasterの死を検出したら、
Slave 192.168.1.1, 192.168.1.3
ってする。クライアントは依然192.168.1.1にアクセスする。
ってやってるよ。
0823nobodyさん
2009/08/15(土) 04:41:01ID:???0824nobodyさん
2009/08/15(土) 21:07:23ID:Ioyu6DB3中の2バイト文字が全て?〜;の形式にエスケープされて出力されてしまいました。
このエスケープ処理を切るにはどのようにしたら良いのでしょうか。
よろしくお願いします。
0825nobodyさん
2009/08/16(日) 05:33:13ID:???あとIPアドレス振り直しは、ARPが書き変わるまでは通信不能。
デフォルトゲートウェイ設定の絡みで、同一サブネットだと、複数IP振っても特定のIPしか使われなかったりするけどな。
理論では、うまく逝きそうな仕組みも現実はそう簡単ではない事も多い。
0826nobodyさん
2009/08/16(日) 06:52:43ID:???kwsk (w
0827nobodyさん
2009/08/16(日) 11:37:26ID:???http://docs.komagata.org/4000
0828nobodyさん
2009/08/16(日) 12:59:03ID:U2+68uzWありがとうございます。助かりました。
0830nobodyさん
2009/08/18(火) 14:36:53ID:xQbi8Iqyconfig/environments/test.rbに
Rails.public_path = RAILS_ROOT + "/test/public"
を追加してテスト環境モードでサーバを起動して、
http://localhost:3000/foo
にアクセスしても、RAILS_ROOT + "/public/foo"のファイルが見えてしまいます。
何かいい解決方法はないでしょうか。
0832830
2009/08/18(火) 18:19:34ID:xQbi8IqyRAILD_ROOT + "/public"
を公開用ディレクトリとして認識してくれます。
んで、どこに設定されているんだろうかと調べていたら
Rails.public_pathという設定に行き着きました。
それだったらRails.public_pathに何か設定する方法があるだろうと思っています。
サーバ側の設定なんでしょうか?
仮にサーバだとしてRailsはいつRAILS_ROOTをサーバに渡すんでしょう。
0833nobodyさん
2009/08/18(火) 18:27:06ID:???0835830
2009/08/18(火) 20:26:23ID:xQbi8Iqy0836nobodyさん
2009/08/19(水) 00:27:33ID:???これに指定すればいけるんじゃないだろうか
時間がなくて試せないので、動作報告をくれるとうれしい
0837830
2009/08/19(水) 02:50:08ID:/4UU0U8gmongrelで--prefixを指定したときはブラウザがアクセスするときのURLが変化します。
例えば、--prefixなしの時
http://localhost:3000/order
等としてアクセスしますが、--prefix=/fooをつけると
http://localhost:3000/foo/order
という風になります。
私の期待しているfilesystem上のPATHを変化させる方法ではありません
0838816
2009/08/19(水) 12:32:09ID:???fixtureに書く方法だと、どうしてもテスト用のデータになっちゃうんで、
結局、新たにmigration1個作ってそこに書く方法でやっちゃた。
0839nobodyさん
2009/08/19(水) 13:22:08ID:???viewのedit.html.erbのform_for内で入れ子にしようと fileds_for を使ったところ、
Hoge expected, got HashWithIndifferentAccess とか言われてオブジェクトの更新ができません。
belongs_toで関連付けた Hoge.my_hage= に Hashがそのまま代入されているようなのですが、
どうしたらよいものでしょうか?
構成は以下のようになってます
model: hoge.rb
class Hoge < ActiveRecord::Base
belongs_to :my_hage, :class_name => "Hage"
view: edit.html.erb # /nested/hage/1234/edit
<% form_for([:nested, @hage]) do |f| %>
<%= f.error_messages %>
(略)
<% f.fields_for :my_hage, @hoge.my_hage do |hage_form| %>
<p>
<%= hage_form.label :name%><br />
<%= hage_form.text_area :name %>
</p>
<% end %>
<%= f.submit '更新' %>
<% end %>
0840839
2009/08/19(水) 13:22:50ID:???controller: nested/hage_controller.rb
def update
@hage = Hage.find(params[:id])
respond_to do |format|
if @hage.update_attributes(params[:question])
flash[:notice] = 'Nested::Hage was successfully updated.'
format.html { redirect_to(@hage) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @hage.errors, :status => :unprocessable_entity }
end
end
end
0841839
2009/08/19(水) 14:31:14ID:???class Hoge < ActiveRecord::Base
belongs_to :my_hage, :class_name => "Hage"
accepts_nested_attributes_for :my_hage
でOKでした。
以下が参考になりました。
Localization expected, got HashWithIndifferentAccess - Ruby Forum
http://www.ruby-forum.com/topic/184877
ありがとうございました。おさわがせしました。
0842nobodyさん
2009/08/19(水) 15:02:29ID:???うわ、すまんかった。
このオプションでいけるんじゃないだろうか。
--root PATH
Set the document root (default 'public')
0843nobodyさん
2009/08/20(木) 20:29:11ID:OSASGkcC遅レスですが、同じくWindows環境のattachment_fuで添付ファイルが壊れる現象起こりました。
で、対応としては>>126さんのアドバイスを参考にして
vendor\plugins\attachment_fu\lib\technoweenie\attachment_fu.rbの370行目辺り
File.read(temp_path)をFile.open(temp_path, "rb"){|f| f.read}に変更しました。
あと、メタデータのsizeが設定されたり、されなかったりという現象も起こったので
http://nonki.yoka-yoka.jp/d2009-07-09.htmlを参考にRuby\lib\ruby\1.8\tempfile.rbにも手を入れました。
以上で添付ファイルのDBへの格納、表示ともにうまくいっています。
0844nobodyさん
2009/08/20(木) 22:42:43ID:???0845830
2009/08/23(日) 04:36:10ID:vSt0R6A2mongrel_rails start -r test/public
でtest以下のpublicを読んでくれました。
0846nobodyさん
2009/08/23(日) 09:17:36ID:???0847nobodyさん
2009/08/23(日) 15:34:00ID:???0848nobodyさん
2009/08/27(木) 18:15:48ID:???他のモデルとコントローラー両方から参照したいあるモデル(User,UserSession)があります。
セッション情報やユーザー情報が何度も参照されるため、
下記のように簡易的にクラス変数でキャッシュみたいなことをしたのですが、
デプロイするproductionモードとローカルのdevelopmentでは全然違う挙動をします。
というか、productionモードではわけがわからない動作をします。
def self.current_user
return @@current_user if defined?(@@current_user)
current_user_session = UserSession.current_user_session
@@current_user = current_user_session && current_user_session.user
end
productionモードでは、クラス変数が初期化されたりしない?ということまではわかった(つまり、クラス変数が使いまわされる)
のですが、代替の方法がよくわかりません。
どのように対処したものでしょうか?
Rails 2.3.2です。
0849nobodyさん
2009/08/27(木) 18:21:54ID:???PHPみたいなことはや(ry
0850nobodyさん
2009/08/27(木) 18:24:52ID:???0851nobodyさん
2009/08/27(木) 20:24:29ID:???0853nobodyさん
2009/08/28(金) 06:03:30ID:???0854nobodyさん
2009/08/28(金) 06:51:07ID:???同意。
PHPは言語で、Railsはフレームワーク。
比べるなら、PHPとRubyを比較するべきだよな。
まぁ、>>>849はそれすら分かっていないのかもしれないが。
0855nobodyさん
2009/08/28(金) 10:44:15ID:???知っているのは伝聞のFUD
■ このスレッドは過去ログ倉庫に格納されています