トップページphp
1001コメント432KB

【Ruby】Ruby on Rails Part9

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/02/19(金) 16:13:13ID:SpWtnpr8
■前
【Ruby】Ruby on Rails Part8
http://pc11.2ch.net/test/read.cgi/php/1252842574/

■参考サイト
<英語>
本家: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/
0604nobodyさん2010/06/12(土) 07:40:50ID:rgrGkZ0y
Rails Performance Needs an Overhaul - igvita.com
http://www.igvita.com/2010/06/07/rails-performance-needs-an-overhaul/
0605nobodyさん2010/06/13(日) 01:25:05ID:TuHqmC6K
すいません。
動かない系の質問
/test というプロジェクトを作ってpassengerで稼動させようとしているのですが
The requested URL /test/rails/info/properties was not found on this server.
とエラーが出て正常に動きません
Mongrelでは無事に動いたのを確認しているのでpassenger周りの問題だと思うのですが。
同じ問題で困った方などいらっしゃいましたら、お知恵を貸していただけないでしょうか?

環境
CentOS 5.3
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux]
rubygem 1.3.7
passenger-2.2.11
rails-2.3.8(もしかしたら2.3.5かも)
Apache + mysqlで稼動
0606nobodyさん2010/06/13(日) 01:26:11ID:TuHqmC6K
追記ですが、httpd.confの中身です。
<VirtualHost *:80>
DocumentRoot "/var/www/localhost/htdocs"
RailsEnv development
RailsBaseURI /test

<Directory "/var/www/localhost/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<Directory "/var/www/localhost/htdocs/rails">
Options +FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
0607nobodyさん2010/06/13(日) 09:56:35ID:???
/path/to/test/public に対して DocumentRoot に test という名前で
シンボリックリンクを作って配置する。 だったっけ?
この場合、RailsBaseURIはいらないような気もしたが嘘かもしれない。
0608nobodyさん2010/06/13(日) 15:22:35ID:???
DocumentRootはpublicフォルダを指定しなきゃいけないんじゃなかった?

ちなみにうちのVirtualHost

<VirtualHost *:80>
ServerName yourdomain.net
DocumentRoot /home/yourhome/yourrailsapp/public
RailsMaxPoolSize 5
<Directory "/home/yourhome/yourrailsapp/public">
AllowOverride All
Options -MultiViews FollowSymLinks
</Directory>
</VirtualHost>
0609nobodyさん2010/06/13(日) 16:02:31ID:???
Railsの質問というより、apacheの質問ぽい気もする

>>606
の設定だと、
http://ホスト名/rails/public/
で開けるんじゃないのかな。とはいえこれは明らかに変だ
passengerってことは公開用(かそのテスト)だろうし

通常は >>608 みたいにpublic以下をrootとして公開できるように設定する必要があるかと思う
0610nobodyさん2010/06/14(月) 08:59:58ID:8fwj2FRJ
http://rubyonrails.org/screencasts/rails3/
0611nobodyさん2010/06/15(火) 18:19:59ID:???
2.3.8 に上げたらこの警告がでまくり。overwrite_params はもう使えない??
DEPRECATION WARNING: The :overwrite_params option is deprecated. Specify all the necessary parameters instead
0612nobodyさん2010/06/15(火) 22:12:46ID:???
2.3.8ではRails3で使えなくなる命令に対してdeprecatedが出るようになった。
Rails3にそなえて、deprecatedがなくなるように修正しておくといいよって事らしい。
0613nobodyさん2010/06/16(水) 00:09:59ID:???
警告が出るようになったバージョンをそのまま使い続けるなら
deprecatedはうるさいだけで気にしなくてもよい。
0614nobodyさん2010/06/16(水) 10:02:06ID:ufKXCfb0
Rails 3 in a Nutshell
http://www.amazon.com/Rails-Nutshell-Desktop-Quick-Reference/dp/0596521421/

Beginning Rails 3
http://www.amazon.com/Beginning-Rails-Cloves-Carneiro-Jr/dp/1430224339/

Rails 3 Way, The (2nd Edition) (Addison-Wesley Professional Ruby Series) [Paperback]
http://www.amazon.com/Rails-Way-Addison-Wesley-Professional-Ruby/dp/0321601661/

Rails 3 in Action
http://www.manning.com/katz/
0615nobodyさん2010/06/16(水) 22:47:48ID:???
社内でcakePHP使いに迫害されています
cakeには逆立ちしても真似出来ないrailsの良い点を教えてください
0616nobodyさん2010/06/16(水) 23:23:30ID:???
PHPを使わなくてもいい
0617nobodyさん2010/06/16(水) 23:36:46ID:???
迫害を受け続けた俺の経験からして、
PHP使いは美醜感覚が欠けてるから何をアピールしても無理。
0618nobodyさん2010/06/16(水) 23:37:20ID:???
迫害されてるってことは、社内にPHP使いが多いんだろう。
それなら抵抗しても無駄な気がする。
CakePHPも悪くないけど、script/consoleに相当する機能が欲しいよね。
script/consoleでモデルの動作テストが出来るというのは、Railsのかなりの利点だと思う。
それからPHPの言語仕様上、仕方ないんだけどbelongs_toやhas_manyの記述が
Railsに比べて冗長になる、配列の嵐になる点がダメだと思う。
0619nobodyさん2010/06/17(木) 00:52:00ID:???
まぁ後発の方が優れてることが多いからなぁ
Cakeに負けてるとは思わないけど、Railsの寿命が長いとも思えない
0620nobodyさん2010/06/17(木) 13:36:57ID:xXvtdm8B


CakePHPの残念なところ
http://blog.takeda-soft.jp/blog/show/204

0621nobodyさん2010/06/17(木) 14:27:37ID:???
>>620
へー、こんなのあるんだ
Akelos PHP Framework
http://www.akelos.org/

Railsの移植っぽい感じか
0622nobodyさん2010/06/17(木) 15:50:48ID:???
確認画面が入るとなんで急激に面倒なことになるんだろうか
has_many :xxx なら xxx_ids = [1,2,3] で一発更新できるところが、
確認画面を挟むと、そこに行く前に、いきなり更新されてしまうから使えないし、
超便利な accepts_nested_attributes_for も同じ理由で使えなくなるし。
0623nobodyさん2010/06/17(木) 18:15:07ID:???
>>622
何が問題になるのか分からないのだが・・・
いきなり更新というのがよく分からない
0624nobodyさん2010/06/17(木) 19:20:58ID:???
モデルの命名方法について質問させて下さい。

ファックする担当者権限みたいなモデルを作りたいと思っています。
ようするにファック可能なユーザーを表したいです。

そのためUserInChargeOfFuckモデルというのを考えたのですが、
"UserInChargeOfFuck".tableize をしてみると、
"user_in_charge_of_fucks"になってしまいます。
fucksが複数形になり???となります。

もちろん、Inflectorモジュールで複数形の例外を定義してやればいいのですが、
似たような状況になる度に追加するのはどうなのか?と思ってしまいます。(むしろ面倒くさい)

この場合だとこうですね
ActiveSupport::Inflector.inflections.irregular "user_in_charge_of_fuck", "users_in_charge_of_fuck"

完結な書き方としては FuckerChargedUsers みたいにするのがよいものでしょうか?
06256242010/06/17(木) 20:17:35ID:???
ドキュメントみたら、ActiveSupport::Inflector.inflections.irregularが正規表現通るみたいなので、

ActiveSupport::Inflector.inflections.irregular("user_of_(.+)", 'users_of_\2')
して、モデル名を"ChargedUserOfFuck" のようにしてみたいと思います。
これだと〜〜user_of_〜〜には対応できるのでよいかなーと。

irb(main):020:0> "ChargedUserOfFuck".tableize
=> "charged_users_of_fuck"
0626nobodyさん2010/06/18(金) 03:21:42ID:???
ゆとりをみた
0627nobodyさん2010/06/18(金) 12:03:45ID:???
railsで401とか422とかのHTTPレスポンスエラーをなげるにはどうしたらいいですか。
self.status = 401 とかしないといけないのでしょうか。
raise Http401Error.new() とかできませんか?
0628nobodyさん2010/06/18(金) 22:02:28ID:???
render :text => "Error!", :status => 401
でいいんじゃないの?

0629nobodyさん2010/06/18(金) 23:08:24ID:???
補足
:status は :not_found みたいにシンボルでも書ける
ボディを空にしたい場合は :nothing => true (:text => '' でもいいような気がするけど)
06306052010/06/19(土) 11:48:34ID:bgO7A9jZ
報告遅れましたが、最終的に環境を1から再構築して起動できるようにいたしましたorz
Rubyあ1.8.6と1.8.7、Railsは2.3.5と2.3.8が両方入っていたので
このあたりが原因であったと思っているのですが。それ以上は不明です

みなさま、ご協力ありがとうございました。
0631nobodyさん2010/06/19(土) 15:08:58ID:???
いろんなバージョンのRubyやいろんなgemの組み合わせを使い分けたいときは
rvmを使おう
0632nobodyさん2010/06/20(日) 09:00:15ID:FD2mdesc

>>256

http://twitter.com/BillGates
0633nobodyさん2010/06/20(日) 21:31:04ID:n+LfeZAh
【サッカー/W杯】中村俊輔「皆安全なプレーばかりしていたから、小技で相手をかわそうと思った」「役割に徹している」★4
172 :名無しさん@恐縮です:2010/06/20(日) 21:19:12 ID:9x6hOs100
マリノスサポーターは氏ねば?


中村俊輔出場試合……1勝8敗3分

中村俊輔欠場試合……6勝2敗2分
(2敗はアウェーバルセロナ、アウェーレアルマドリード)

186 名無しさん@恐縮です 2010/02/17(水) 17:55:53 ID:ilxFUZaW0
>>15
これ見て「負けてるときに途中交代で黒星つけられて可哀想だなー」とも思ったけど
中村が出てる試合って3点しか入ってないんだなw

191 名無しさん@恐縮です[sage] 2010/02/17(水) 18:00:27 ID:Ldmu6m530
>>186
これが一番変な色眼鏡無しに公平に見れるデータだと思うよ

□中村出場時間帯 564分
1得点 10失点
得失点 -9
(1試合に換算すると0.16得点1.6失点)

■中村ベンチ時間帯 1416分
15得点 19失点
得失点 -4
(1試合に換算すると0.95得点1.2失点)
0634nobodyさん2010/06/20(日) 21:53:48ID:n+LfeZAh
http://live28.2ch.net/test/read.cgi/mnewsplus/1277034400/172
0635nobodyさん2010/06/21(月) 13:48:38ID:???
replace_htmlを使用して、別コントローラのアクションの結果を埋め込むやり方をご存じの方教えて下さい。

現状:
2つの要素の置き換えを行いたい。
片方はパラメータ等を使い置き換えられることを確認。
しかしもう片方の要素は「Aコントローラのメソッドindexを実行し、その結果に置き換える」という物を求めているが上手く動作しない。
0636nobodyさん2010/06/21(月) 14:13:55ID:???
ajaxを使ったらいけるんじゃないのかな
ajax経由でAコントローラのindex実行してインスタンス変数の中身置き換えて、かつ、再表示みたいな感じで
0637nobodyさん2010/06/21(月) 14:35:23ID:???
>>636
すみません、意思が読み取れませんでした…

先にAコントローラのindexを実行と考えた場合:
link_to_remote("置き換え" , {:update => "置き換え先1", :url => url_for(:controller => "A", :action => "index"), :method => :get}
これで実行結果を表示させることは出来ますが、もう1つの要素の置き換えをするやり方がわからず、この方法でも手詰まり状態です。
0638nobodyさん2010/06/21(月) 17:32:16ID:???
モデルの属性には存在しない(テーブルのカラムが存在しない)けど、フォームのコントローラとしては
存在するようなデータは、どうやって扱えばいいのでしょうか。
今困ってるのは、色を表す color というカラムがあって、これは #FFFFFF のような値が入るのに、
フォームでは red: 0-255, green: 0-255, blue: 0-255 のように入力するようになっていて、
それでバリデーションの書き方とか、f.text でどう指定すればいいのかとか、わからないので
だれか手がかりでも結構ですので教えてください。
0639nobodyさん2010/06/21(月) 17:54:39ID:???
Rails的フレームワークの弊害だろうか
ここまで型を与えてしまうと、少しでも型から外れたことができなくなる
0640nobodyさん2010/06/21(月) 19:32:17ID:???
コントローラ⇒ビュー⇒ヘルパー ここのヘルパーでコントローラ名を取得する方法を教えて下さい
0641nobodyさん2010/06/21(月) 20:22:59ID:???
>>635

直接呼ぶのも出来なくはないのかも知れんけど筋が悪そう。
別コントローラのアクションを共通モジュールにしたほうが良い気がするけど

>>638

accessor使うなり、独自のフィールド作るなり

>>640
params[:controller]で取れない?
0642nobodyさん2010/06/22(火) 09:13:54ID:???
>>641
取れました
ありがとうございました
0643nobodyさん2010/06/22(火) 14:18:27ID:DFcN5Bvo

共同購入型クーポンサービス、RailsのPaaS「Heroku」上に構築 ? @IT
http://www.atmarkit.co.jp/news/201006/21/minawari.html

開始2年で年商321億円、グルーポン系サービスの日本版まとめ - はてなこわい><
http://b.hatena.ne.jp/entry/d.hatena.ne.jp/taan/20100621/p1

0644nobodyさん2010/06/22(火) 15:37:42ID:???
<%form_for(@model) do |f|%>
<%=f.text_field :name%>

これでnameのテキストフィールドには、valueとしてmodel.nameがセットされると思います。
この元のnameの値(valueに入る値)をsubmit時の引数として渡したいのですが、やり方がわかりません。
わかる方いましたら教えて下さい、お願いします。
0645nobodyさん2010/06/22(火) 16:34:03ID:???
何もしなくても、model[:name]で渡されてると思うけど
0646nobodyさん2010/06/23(水) 02:02:24ID:???
usersテーブル:id,name,etc
commentsテーブル:id,user_id,text
responseテーブル:id,commment_id,user_id,text

@comments = Comment.find(:conditions =>{:id => id}, :include => 'responses')

@comments.each do |comment|
@response << comment.response if comment.response
end

render :xml => {:comments => @comment, :response => @response}

commentとresponseを返すwebapiを作りたいと思っています。
その際にcomment、responseしているユーザ名の取得も行いたいのですが
どのようにするのが効率よくできるのでしょうか?

それとも、comment,responseテーブルに予めnameカラムを持たせたほうが良いですか?
0647nobodyさん2010/06/23(水) 03:44:45ID:???
> それとも、comment,responseテーブルに予めnameカラムを持たせたほうが良いですか?

そだね。このケースではそれが一番手っ取り早そう。
ただ、user.nameが変わっても反映されないけど、それで問題なければ
0648nobodyさん2010/06/23(水) 12:52:14ID:5nqbPSdk
rails3の正式リリースってなんでこんなに遅れてんの??
rails開発者界隈でなんかもめごととかあるのかな?
0649nobodyさん2010/06/23(水) 15:47:44ID:scuHCblD
>>647
処理が煩雑になるようならnameの反映は諦めようと思っています。
ちなみに、現在のテーブル構成で実装する場合、
comment、responseのそれぞれにnameをひもづけて以下のようにクライアントに渡したいのですが
取得したcommentオブジェクトにnameプロパティを動的に追加のようなことができますか?
Commentクラスにnameセッターを作り値を設定してやっても思ったように動作しませんでした。

<comment>
<id>1</id>
<text>こんにちは</text>
<user_id>001</user_id>
<name>名前</name>
</comment>
0650nobodyさん2010/06/23(水) 16:26:25ID:???
>>648
1.9.2待ちなんじゃないの?

>>649
セッターだけ?
まぁ、ゲッターつけてもダメかもしれんが
0651nobodyさん2010/06/23(水) 16:49:15ID:???
>>649
object.to_xml として to_xml の引数に :methods => [:name] とかすれば
object.name メソッドの結果が並列に入ったり、
:include => {:user => {...}} とかやれば
object.user が入れ子で入ったりもできたはず。
詳しくは to_xml 嫁。
0652nobodyさん2010/06/24(木) 10:01:39ID:???
update.attributesを使用すると主キーの更新が出来ない為、executeを使用しています。
しかしexecuteを使用する場合、入力チェックが上手く動かずに悩んでいます。
connection.executeを使用した時に入力チェックする方法があれば教えて下さい。
0653nobodyさん2010/06/24(木) 10:22:19ID:???
>>652 主キーが :id のことだとして、 update_attributesで:idを変えられないのは デフォルトでattr_protected(ぐぐれ)に入っているから。 無難なのは、:idだけ、obj[:id] = newid で書き換えること。
0654nobodyさん2010/06/24(木) 10:39:59ID:???
>>653
@obj[:id] = params[:newobj][:newid]
@obj.update_attributes(params[:newobj])
のような形でやればいいということですか?
今試行してみましたがid部分だけ更新されませんでした
0655nobodyさん2010/06/24(木) 11:05:13ID:???
ああ、保存後だと無理だろうなぁ
別オブジェクトとして保存後に元のオブジェクトを消すしかないんじゃないか?
0656nobodyさん2010/06/24(木) 11:43:08ID:???
on update cascadeで参照されているので保存して消すとかは出来ないです
別途id(主キー)を作って既存idを主キーからユニークに変更するしかないんでしょうか?
0657nobodyさん2010/06/24(木) 16:04:10ID:???
named_scopeの中身に、別のnamed_scope を記述することは出来ないのでしょうか

named_scope :hoge
named_scope :hogehoge , Hoge.hoge

みたいな感じで
0658nobodyさん2010/06/24(木) 16:34:41ID:???
所詮はクラスメソッドなので
named_scope :a, ...
named_scope :b, ...
def self.ab; a.b; end
とは出来る。
06596572010/06/24(木) 16:46:13ID:???
>>658
おお、これで十分!
助かりました!
0660nobodyさん2010/06/24(木) 16:58:24ID:JCV4W5p0
縦に並んだリスト要素をマウスオーバーした瞬間、
その右隣に、ちょっとした説明が出現するものを作ろうとしています。

バナナ
りんご
スイカ

↓ りんごをマウスオーバー時

バナナ
りんご 赤い
スイカ

ざっというと、こんな感じのものを作りたいと思っているのですが、行き詰っています。

<% @fruites.each do |fruite| %>
<%= fruite.name %> <%= fruite.explain %> #問題はここです
<% end %>

という感じで作りたいと思ってます。

クリックを説明文表示のトリガとするなら、link_to_remoteでいいと思うのですが、
マウスオーバーをトリガとして動かす方法がわからず、困っています。

問題の行を、JavascriptのAjaxUpdaterで直に書いてしまうと、今度はrubyのeachから、
どうやって変更箇所のid名(右隣のid名)をもらえばいいかが分からなくなってしまいます。
できればRubyサイドで解決したいと思いますが、JavaScript直書きの解決法でも構いません。

解決のためのよい方法をご存知の方いましたら、教えて頂けると嬉しいです。
よろしくお願い致します。
0661nobodyさん2010/06/24(木) 20:19:05ID:???
>660
それCSSで出来るよ。
0662nobodyさん2010/06/24(木) 20:34:37ID:???
> 問題の行を、JavascriptのAjaxUpdaterで直に書いてしまうと、今度はrubyのeachから、
> どうやって変更箇所のid名(右隣のid名)をもらえばいいかが分からなくなってしまいます。

いまいち意味不明なんだけど、行じゃなくてフィールドだけ書き換えるとか、
取得したデータの中にもid埋め込んどくとかすればいいんじゃないの?
そもそもマウスオーバーの度にサーバにアクセスにいくのが重そうだけど。
0663nobodyさん2010/06/25(金) 07:44:40ID:???
JavaScript、CSS、ツールチップあたりでググるといいかも
0664アプリやろう2010/06/25(金) 17:51:37ID:7ahEdaSV
どなたか、railsで、open-social-cliantを使って、モバゲーのAPI回り(認証)を開発された
方いらっしゃいませんか?

どうしても、認証ができずに、困っています
06656602010/06/25(金) 20:58:06ID:d9J8AzZj
おかげさまで解決しました。ありがとうございました。
0666nobodyさん2010/06/25(金) 23:52:14ID:???
>>664
それってopensicial-ruby-clientのこと?
ググったらなんかこんなとこでは教えて貰えなそうな感じだけど。
法人でパートナー企業だけにしか情報が公開されないし、できないみたいだから
0667アプリやろう2010/06/26(土) 01:27:27ID:HMIkgY+l
>>666
もしかしてご存知ですか。
一応パートナー企業に登録して開発中なんですが、そこで立ち止まっています。
もしご存知でしたら、有料でもお願いいたしたいのですが
0668nobodyさん2010/06/26(土) 02:11:34ID:???
規約違反だろ……
0669nobodyさん2010/06/26(土) 02:48:39ID:???
そこで立ち止まっちゃうとかどうなのよ
サイバー出身の美人社長のところか?
0670nobodyさん2010/06/26(土) 08:48:46ID:ZE4U+TkC
http://blog.kushii.net/archives/1350951.html


http://www.find-job.net/list/j78008.html?from=41
http://www.ctrl-plus.jp/
0671nobodyさん2010/06/26(土) 14:29:23ID:ZE4U+TkC

railsでモバゲーソーシャルアプリ
モバゲーでruby on railsを使って、APIの認証、API回りのメソッド作成
http://www.sohovillage.com/classads/helpwanted/1277455769/
0672nobodyさん2010/06/26(土) 15:28:22ID:???
>>670
いいな、この職場のイメージ
女性が社長ってのも悪くないな
0673nobodyさん2010/06/26(土) 17:44:59ID:???
ttp://www.sohovillage.com/classads/helpwanted/1277455769/

だれか助けてやれよ。10万だってよ
0674nobodyさん2010/06/26(土) 18:34:54ID:???
そんな曖昧な仕事誰もやらねーよ
会社として資質を疑う
0675nobodyさん2010/06/26(土) 18:41:21ID:???
>>673-674
わろた 10万円wwww
0676nobodyさん2010/06/26(土) 19:19:21ID:ZE4U+TkC
RubyやJavaなどOSSの「レスキューサービス」,イーシー・ワンが1件3万円から:ITpro
http://itpro.nikkeibp.co.jp/article/NEWS/20090701/333034/

ナレッジセンターレスキューサービス | サービス・製品 | EC-One
http://www.ec-one.com/product/rescue.html

ナレッジセンターレスキューサービスは、システム開発にまつわるあらゆるお問い合わせに対して、
経験豊富なITアーキテクトが親身に助言を行う質問・相談窓口サービスです。

複数の技術が絡み合った複合型のトラブルにも対応

技術提供範囲
Ruby,Ruby on Rails
0677nobodyさん2010/06/26(土) 19:23:02ID:ZE4U+TkC

Railsでモバゲーアプリ開発 - 篳篥日記
ttp://d.hatena.ne.jp/hichiriki/20100410/1270887790
0678nobodyさん2010/06/26(土) 20:28:13ID:ZE4U+TkC
パートナーデベロッパー登録 - DeNA デベロッパーサイト モバゲーオープンプラットフォーム
https://developer.dena.jp/mbga/register
0679nobodyさん2010/06/27(日) 19:02:06ID:???
分かればそんなに難しくはないけどね。
ドキュメントにも書いてあるんだけど、
ちょっとその部分が強調はされてないから
分かりづらいというのはある。

ただ、モバゲーの特殊性について触れてるブログあるので(Perlだけど)そこみれば分かる。
それで出来なきゃ技術力不足ということでしょう。
0680nobodyさん2010/06/29(火) 01:43:34ID:???
apache + passenger の環境なのですが、トップページに携帯でアクセスがあった場合、
.htaccess で /mobile/ ディレクトリに飛ばす、ということがどうも上手くいきません・・・
(なお、index.htmlは静的ファイルとして存在する)
passenger のPassengerHighPerformance オプションはoffにしています。
またrewriteengineが動作していることは確認済みです。

.htaccess の内容は、よくある

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|DDIPOKET|UP\.Browser|J-PHONE|Vodafone|SoftBank)
RewriteRule ^$ /mobile/ [R]

です。ひどく困っています、どなたかおたすけください。
0681nobodyさん2010/06/29(火) 02:06:25ID:???
確認済みならRewriteLogしてるはず。

0682nobodyさん2010/06/29(火) 02:18:26ID:???
>>680
それはPassengerなしのApacheでも動作してるのか?
06836802010/06/29(火) 02:58:45ID:???
>>681,682
返信サンクスです。

<VirtualHost *:80>
ServerName hoge.hoge.com
DocumentRoot /var/www/hoge/public/
RailsEnv production
PassengerEnabled off
</VirtualHost>

とすると、.htaccessによるrewriteが効くようになり
http://hoge.hoge.com に携帯でアクセスすると http://hoge.hoge.com/mobile/
に飛ぶようになるので、rewrite自体には問題はないと思います。
PassegerEnable on にしたとたん、rewriteが発生しなくなります・・・
06846802010/06/29(火) 03:31:19ID:Ta1QVwxn
rewriteのログものせておきます。

-- PassengerEnabled off の場合(rewriteが走っている)
(3) [perdir /var/www/hoge/public/] applying pattern '^$' to uri ''
(2) [perdir /var/www/hoge/public/] rewrite '' -> '/m/'
(2) [perdir /var/www/hoge/public/] explicitly forcing redirect with http://hoge.hoge.com/m/
(1) [perdir /var/www/hoge/public/] escaping http://hoge.hoge.com/m/ for redirect
(1) [perdir /var/www/hoge/public/] redirect to http://hoge.hoge.com/m/ [REDIRECT/302]

-- PassengerEnabled on の場合(rewriteが走っていない)
(3) [perdir /var/www/hoge/public/] strip per-dir prefix: /var/www/hoge/public/index.html -> index.html
(3) [perdir /var/www/hoge/public/] applying pattern '^$' to uri 'index.html'
(1) [perdir /var/www/hoge/public/] pass through /var/www/hoge/public/index.html

0685nobodyさん2010/06/29(火) 08:52:07ID:???
>>680
「passenger mod_rewrite」ぐぐってみたが

マニュアルの和訳
> mod_rewriteとmod_alias
> Passengerはmod_rewriteとmod_aliasと衝突する。
> Railsアプリケーションを含むバーチャルホスト内でこれらのモジュールを併用する事は推奨できない。
> バーチャルホストの外ではうまく動くかもしれない。
> 標準で、PassengerはRailsホストのmod_rewriteルールを上書きする。
> Railsの標準では、.htaccessを使ってdispatch.cgiにリライトするルールが書かれており、
> これが非常に遅い処理であるため、「そのまま使える」という重要な目標のためにこのような対策を行っている。
> mod_aliasに関する説明がなされていないが、
> バーチャルホストのRailsアプリケーションと組み合わせたとき、大変な問題が発生するとの事。
> mod_rewriteを使いたい場合、RailsAllowModRewriteを使えばよい。
> ただし、先述の問題を回避するために、.htaccessを削除するかリライトルールを書き換える必要がある。

KOSHIGOE学習帳 - [Ruby] Passenger
http://w.koshigoe.jp/study/?%5BRuby%5D+Passenger


> RailsAllowModRewrite <on|off>
> このオプションを有効にすると、mod_rewriteを上書きしなくなる(後述)。デフォルトでoff。
> グローバル設定やバーチャルホスト設定で行う。
http://w.koshigoe.jp/study/?[Ruby]+Passenger#l24

公式の記述
Phusion Passenger users guide
http://www.modrails.com/documentation/Users%20guide.html#PassengerHighPerformance


公式としてはPassengerHighPerformance offでないとmod_rewriteうごかねーよってことだけど
0686nobodyさん2010/06/29(火) 08:53:42ID:???
悪い読み間違えてた
PassengerHighPerformance は offってあるのね
0687nobodyさん2010/06/29(火) 09:06:17ID:???
>>684
onにしたとたん走らなくなるなら、書いてある通り、仕様じゃないの?
最初はoffにしても動かないという話だったような。
06886802010/06/29(火) 09:24:37ID:???
色々レスありがとうございます
ずっとあれこれやっていますが、やはりダメです・・・

RailsAllowModRewrite on

をいれても、rewriteは発生せず
とにかく PassengerEnabled off にした場合だけ rewriteが聞く感じです

685さんのレスや、
ttp://underrails.seesaa.net/article/122286387.html
の記事を読む限り、動いてくれても良さそうなのですが。。。

/var/www/hoge のトップディレクトリのURLパターンのみ、PassengerEnabled offにし、
/var/www/hoge/users (railsアプリのuserコントローラ)や、サブディレクトリでは
PassengerEnabled on にする、というアプローチは可能でしょうか

<Directroy /var/www/hoge/public/>
PassengerEnabled off
</Directroy>
とか
<Location />
PassengerEnabled off
</Directroy>

を使うと、全てPassengerの対象外になってしまい
全てのrailsコントローラが動作しなくなってしまいます。
どちらかというとapacheの質問になってしまいますが…
06896802010/06/29(火) 09:53:13ID:???
自己レスですが一応、以下のようにしたところ、うまくいくようになりました。
100%うまくいっているかどうかは自身がありませんが…

みなさん、レスありがとうございました。


<VirtualHost *:80>

Options Indexes FollowSymlinks ExecCGI
ServerName hoge.hoge.com
DocumentRoot /var/www/hoge/public/
RailsEnv production

PassengerEnabled off
RailsAllowModRewrite on
PassengerHighPerformance off

<Directory /var/www/hoge/public/ >
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo)
RewriteRule ^$ /m/ [R]
</Directory>

<Location ~ "^/.+" >
PassengerEnabled on
</Location>

</VirtualHost>
0690nobodyさん2010/06/29(火) 16:41:16ID:jZ0uql/v
Padrino: A Webapp Framework Wrapped Around Sinatra
http://www.rubyinside.com/padrino-sinatra-webapp-framework-3198.html
0691nobodyさん2010/06/30(水) 17:03:33ID:z+oq0KsY
Twitterの大規模システム運用技術、あるいはクジラの腹の中(前編)〜ログの科学的な分析と、Twitterの「ダークモード」 − Publickey
http://b.hatena.ne.jp/entry/www.publickey1.jp/blog/10/twittertwitter.html
0692nobodyさん2010/06/30(水) 17:08:44ID:z+oq0KsY
掲載料金は100万回の露出保証で20万円から。2500万回の露出保証だと単価は下がり250万円
http://www.nikkei.com/tech/business/article/g=96958A9C93819499E1E2E2E19B8DE1E2E2E6E0E2E3E2E2E2E2E2E2E2;df=3;p=9694E1E2E2E6E0E2E3E2E2E5E7E6
0693nobodyさん2010/07/01(木) 15:45:47ID:NcLY7s4Z
Twitterの大規模システム運用技術、あるいはクジラの腹の中(後編)〜Twitterのサブシステム「Unicorn」「Kestrel」「Flock DB」 − Publickey
http://b.hatena.ne.jp/entry/www.publickey1.jp/blog/10/twittertwitterunicornkestrelflock_db.html
Rails ServerのMongrelとUnicornを比較すると、Mongrelは、スーパーマーケットのレジに並ぶたくさんの列があるが、どの列の処理ががどれだけかかるか知らされないままに並ばせられるようなものなのに対し、
Unicornは処理してくれる番が自動的に割り振られる長い列の中で待っているようなものだ。
0694nobodyさん2010/07/01(木) 18:25:41ID:wNXa1RdM
すみません。インストールで詰んでます。。Windows7です

1.ActiveScriptRuby 1.8.7(p299)をインストール
2.RDoc1.8.msiをインストール
3.管理者権限でruby consoleを起動
4.gemのバージョンは1.3.7で、gem install rails --include-dependencies
5.とすると下記のエラーが出ます。
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
too many connection resets (http://rubygems.org/gems/activeresource-2.3.8.gem)

エラーの内容でググって、ファイヤーウォールを切ってみたり、
時間を置いて再挑戦してみても毎回同じエラーが出ます。

状況を判断する情報が不足しているかも知れませんが、
どう対処すればよいか教えて頂けないでしょうか?
0695nobodyさん2010/07/01(木) 18:45:29ID:NcLY7s4Z
Rails can also be downloaded as stand-alone packages.
http://rubyforge.org/frs/download.php/63167/rails-2.3.4.gem
http://rubyforge.org/frs/?group_id=307
06966942010/07/01(木) 19:05:49ID:???
>>695
手動インストールを試していませんでした。
教えて頂いたリンク先からrails 2.3.4をインストールできました。

助かりました。ありがとうございました。
0697nobodyさん2010/07/01(木) 21:52:35ID:???
rails 2.3.5を使用しています。
ActiveRecordを使用してデータベースの複数のテーブルから情報を取り出しています。
validateで入力エラーチェックをさせエラーの場合再入力を求めようとしています。
一度controllerに渡してしまった値を、データベースから取り出した状態と同じ型にしたいのですが簡単に出来る方法はありませんか?
データひとつひとつにModel.new(params[:data])みたいなことをしないといけないのでしょうか?
0698nobodyさん2010/07/01(木) 21:59:56ID:akp3EIN0

http://weblog.rubyonrails.org/2010/5/25/ruby-on-rails-2-3-8-released

http://weblog.rubyonrails.org/2010/6/8/rails-3-0-beta-4-now-rc-in-days
0699nobodyさん2010/07/01(木) 22:30:10ID:???
>>697

1. DBからARのインスタンスを作る
2. クライアントに渡す
3. クライアントから送られてきたデータで保存用ARインスタンスをつくり、validate
4a. validなら保存して終了
4b. invalidな場合、validな属性は残し、invalidだった属性には元の値をいれて2.に戻る

こういう流れ?
0700nobodyさん2010/07/01(木) 22:57:18ID:???
1. DBからARのインスタンスを作る
2. クライアントに渡す
3. クライアントから送られてきたデータで保存用ARインスタンスをつくり、validate
4a. validなら保存して終了
4b. invalidな場合、クライアントから送られてきたデータ全てをクライアントに渡し直す

こういう流れです
クライアントはDBからのARインスタンスを受け取る形にしている為、4b.から同じ形で戻したいと思ってます
0701nobodyさん2010/07/01(木) 23:21:10ID:???
ひとつ聞きたいのだが、
スキャフォールドにバリデートを仕込んだプログラムを動かしたことあるか?
0702nobodyさん2010/07/01(木) 23:44:44ID:???
@example = Example.new
@example(params[:data])

begin
@example.save!
rescue
respond_to do |format|
format.html { render(:action => :new) }
end
else
respond_to do |format|
format.html { redirect_to(examples_path)}
end
end

このような簡単な物なら動かしたことあります
今回は上記例で言うとvalid(@example.saveが成功)の時に他のテーブルに詳細情報のsaveを行うという処理です
複数の配列で渡される詳細情報の一行ごとにわざわざModel.new(params[:data])みたいなことをしないといけないのかと思ったので質問しました
0703nobodyさん2010/07/02(金) 01:56:06ID:???
そういうのはビジネスロジックを入れ込んだモデルを
自作してやるのがいいと思う
すべてを単純なActiveRecordの使い方で解決できるわけじゃないよ
詳細情報のテーブルがあるなら、たぶんトランザクションを使わなきゃだろうし
■ このスレッドは過去ログ倉庫に格納されています