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

【Ruby】Ruby on Rails Part7

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/04/30(木) 23:07:27ID:???
■前 Ruby on Rails のスレ が
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
0778nobodyさん2009/08/04(火) 17:45:14ID:???
プラグインが動いたとき、いつも「おーすげー」といってしまう
07797552009/08/05(水) 00:30:31ID:???
select("foo", "bar", {1 => 1, 2 => 2, ....., 20 => 20})
と、数字を20まで表示させたいのですが、ループなどを組んで指定するにはどうやったらいいのでしょうか?
0780nobodyさん2009/08/05(水) 00:50:11ID:???
>>779
opts = {}
(1..20).each {|i| opts[i] = i }

みたいな感じでハッシュを作ってそれを select に渡したら?
0781nobodyさん2009/08/05(水) 01:20:19ID:???
>>780

Hash[(1..20).map{|e|[e,e]}]
や
(1..20).inject({}){|r,e| r[e]=e;r}
なら、その場に書ける。
0782nobodyさん2009/08/05(水) 03:46:34ID:???
>>781
前者は古いrubyだと動かないんじゃないか?
0783nobodyさん2009/08/05(水) 09:03:17ID:???
>>782
1.8.6だとアンドキュメンテッド(というかドキュメント化を忘れられ)
だが、動く。
07847832009/08/05(水) 09:04:35ID:???
動くと思ったが、Hash[*(...)] でないとうごかなかった。
ごめんなさい。
0785nobodyさん2009/08/05(水) 11:05:53ID:???
>>779-784
みなさまどうもありがとうございます
教えていただいた方法全て試したのですが、
<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
validates_length_ofってなんでバイト数じゃなくて文字数を見るようになったの?
バイト数の方がよかったんだけど・・

この仕様しらなかったせいでバリーデーション不備のまま本番にあげちゃってちょん切れたデータを多数テーブルに格納してしまった・・
0788nobodyさん2009/08/05(水) 11:57:44ID:???
mysqlだとtextとstringで違うとかもあった
07897802009/08/05(水) 12:16:04ID:???
>>785
ごめん。ハッシュじゃそりゃダメだわw
>>786 みたいにするか

[[label1, value1], [label2, value2], ...]

な配列を渡すんだ

http://api.rubyonrails.org/
0790nobodyさん2009/08/05(水) 14:14:24ID:???
>>786
そのやり方でできました!
ありがとうございます。
0791nobodyさん2009/08/05(水) 16:35:58ID:???
map.resource(s)で定義されるRESTfulなルーティング規則で呼び出される
アクション(indexとかshowとか)に対して、before_filterで、実行予定のア
クションが
- コレクションのアクション(index, newなど)
- メンバーのアクション(show, destroyなど)
のどちらなのかを判断する方法はないでしょうか。

標準のscaffoldで作られるもの以外にも対応したいので、
- index/new/createならコレクション
- show/edit/update/destroyはメンバー
という判定は避けたいです。

idパラメータの有無で判断するのが簡便に思えますが、誤判定の可能性
はないでしょうか。
07927772009/08/06(木) 00:16:21ID:???
>>777
テストのときだけ認証をスルーするようにした。
0793nobodyさん2009/08/06(木) 04:01:57ID:???
>>791
action_name 見りゃいいだけじゃ?
0794nobodyさん2009/08/06(木) 04:44:08ID:???
insert_html で、javascriptのコードをevalした結果を
insertしたりとかでけんのですかね?
いろいろと試してはみたのですが。
insert_html 'hoge', :bottom, :js => 'fuga' とか。
0795nobodyさん2009/08/06(木) 08:43:01ID:???
>>793
それはまさに>>791が避けたいと言っている方法では。
0796nobodyさん2009/08/06(木) 08:48:10ID:???
id以外にメンバを指定する方法を実装したら
それをどんどん判定条件に加えていけばいいような。
0797nobodyさん2009/08/06(木) 11:23:04ID:???
コレクションに対するアクションなのか、メンバーに対するアクションなのかは
アクションの実際の動作によるとしかいえないので、アクションの動作を
調べないかぎり誤判定はありえるでしょう。
つまりはコレクションかメンバーかは規約によるので、restという規約なら
アクションは予め決まっているので、それをaction_nameで判断すればいいのでは
ないでしょうか。
restのアクション以外を実装するケースを判断するには、そのアクションの対象が
コレクションかメンバーなのかは実装者にしかわからないでしょう。

0798nobodyさん2009/08/06(木) 13:22:51ID:???
resoucesメソッドの :collection => とか :member => とかを見れば
どうかと思ったが、その場でルーティング判定コードに変換されたらど
こにも残ってないな。
0799nobodyさん2009/08/06(木) 19:37:35ID:???
ActionMailerでお手紙だそうとしているんですが、タイトルが文字化けしてしまうの(´・ω・`)
文字化けしないようにするにはどうしたらいいんでしょうか?

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:U5nTdGUe
受信者のタイトルの文字コードをまず書いてね。
0801nobodyさん2009/08/07(金) 01:36:44ID:???
メールにかけられた呪文「MIME〜前編」
http://www.atmarkit.co.jp/fnetwork/rensai/netpro03/netpro01.html
08027992009/08/07(金) 04:13:16ID:???
>>800
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
08037992009/08/07(金) 04:24:05ID:???
何度もすいませんw

日本語化は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:???
そのコントローラのヘルパで、form_forを再定義して
error_messagesを再定義するようなモジュールをmixinすればいいんじゃない?
08068042009/08/08(土) 10:15:54ID:???
>>805
ありがとうございます。
うまいこと、再定義する方法ってないものでしょうか?

下記のようにすると、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
08078042009/08/08(土) 10:17:37ID:???
さあああ、form_forをヘルパーで定義して、
以前のform_forを直接読んでやればよいのか…。
ちょっとやってみます。
0808nobodyさん2009/08/08(土) 12:34:13ID:???
>>806
なんていうか、既存のクラスを弄ってしまうのはなんかイヤなので、
class HogeHelper
 
0809nobodyさん2009/08/08(土) 12:47:11ID:???
途中投稿orz……

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:???
それがRubyの醍醐味じゃないか
0811nobodyさん2009/08/08(土) 13:21:01ID:???
インスタンスにmixinとかいうのも
それはそれでRuby的だよね
0812nobodyさん2009/08/10(月) 15:53:57ID:???
DBが2台あって、通常は1台のほうにアクセスし、
障害があったときにもう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:VNj7FetZ
railsでするって表現はどうかと思う。
Railsで扱えるDB(Mysql, PostgreSQL, Oracle, ...)が
812のいう機能をサポートしていればできる。

んで、大体のDBでできる。
08158122009/08/11(火) 11:43:12ID:???
>>813 >>814
返答ありがとうございます。

MySQLでお互いをMaster&Slaveにして、デュアルマスタにしているのですが、
片方死んだ時に切り替えたく思っています。
スレ違いになりそうですが、813さんと814さんの言ってることは
バーチャルIPかなんか振っておけってことでしょうか(DBサーバに)?
0816nobodyさん2009/08/11(火) 15:52:45ID:???
初期の管理ユーザーとかテストユーザーの登録みたいなプロダクション用の初期DBみたいのってどうやっておこうなうもんなんでしょうか?

・migrationに書く
・script/以下にスクリプト置いて、script/runnerで実行させる

migrationに書く方法だと、migrate後にdevelopment DBに db:fixtures:loadとかして開発用に初期DB入れようとすると、
migrationで入れたDBデータがぶっ飛んでしまいませんか?
0817nobodyさん2009/08/12(水) 08:25:01ID:???
xxx_fu って名前のプラグインが多いんだが、fu ってなんぞ?
fxck you の略?
0818nobodyさん2009/08/12(水) 11:09:05ID:???
カンフーのfu。「なんか東洋のすごい技」みたいなイメージで使われてる。
GIMPのScript-fuあたりが嚆矢かな。
0819nobodyさん2009/08/12(水) 11:50:53ID:???
☆ へぇへぇへぇー
   〃Λ_Λ
   ( ・∀・)
  ┏┓⊂ ⊂_)
`/ ̄ ̄ ̄ ̄ ̄ ̄/|
| ̄ ̄ ̄ ̄ ̄ ̄| |
|| ̄ ̄ ̄ ̄ ̄|| |
|| ┃┃┃ || |
|| ┃┗┫ || |
|| ┃ ┃ || |
||_____||/
└──────┘
0820nobodyさん2009/08/12(水) 12:22:42ID:???
Jargon Fileにも載ってるね。
ttp://www.catb.org/~esr/jargon/html/F/suffix-fu.html
直接の用法は「熟練の技」みたいな感じだが、
プラギンに使ってるのはおそらくノリというか面白半分だろうな。
0821nobodyさん2009/08/12(水) 19:16:22ID:???
>>816
db:fixtures:load RAILS_ENV=production
でいいんじゃないかと思います。
初期ユーザーなどは開発用にも必要なものだと思いますので、
それぞれの環境ごとに、しかし同じ方法でやるのがいいと思います。
0822nobodyさん2009/08/15(土) 02:11:01ID:3etX9jN1
>>815
Master 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:???
db:fixtures:load ってモデルのバリデーションかからないんじゃないの?
0824nobodyさん2009/08/15(土) 21:07:23ID:Ioyu6DB3
〜.rxmlのtemplateを作成して、xmlを出力してみたところ、
中の2バイト文字が全て?〜;の形式にエスケープされて出力されてしまいました。
このエスケープ処理を切るにはどのようにしたら良いのでしょうか。
よろしくお願いします。
0825nobodyさん2009/08/16(日) 05:33:13ID:???
誤検出とか、検出出来ずにうまく切り替えられない事も多いけどね。
あとIPアドレス振り直しは、ARPが書き変わるまでは通信不能。
デフォルトゲートウェイ設定の絡みで、同一サブネットだと、複数IP振っても特定のIPしか使われなかったりするけどな。
理論では、うまく逝きそうな仕組みも現実はそう簡単ではない事も多い。
0826nobodyさん2009/08/16(日) 06:52:43ID:???
>デフォルトゲートウェイ設定の絡みで、同一サブネットだと、複数IP振っても特定のIPしか使われなかったりするけどな。

kwsk (w
0827nobodyさん2009/08/16(日) 11:37:26ID:???
>>824
http://docs.komagata.org/4000
0828nobodyさん2009/08/16(日) 12:59:03ID:U2+68uzW
>>827
ありがとうございます。助かりました。
08298152009/08/17(月) 11:15:00ID:???
>>822
ありがとうございます。
hearbeatで構築しようと思います。
スレ違いにも関わらず返答頂き、助かりました
0830nobodyさん2009/08/18(火) 14:36:53ID:xQbi8Iqy
Rails.public_pathをtestの時だけ変更したいんですが・・・。
config/environments/test.rbに
Rails.public_path = RAILS_ROOT + "/test/public"
を追加してテスト環境モードでサーバを起動して、
http://localhost:3000/foo
にアクセスしても、RAILS_ROOT + "/public/foo"のファイルが見えてしまいます。

何かいい解決方法はないでしょうか。
0831nobodyさん2009/08/18(火) 17:53:06ID:???
>>830
apacheとかウェブサーバー側で操作すんじゃないの?
08328302009/08/18(火) 18:19:34ID:xQbi8Iqy
railsって特に設定しなくても
RAILD_ROOT + "/public"
を公開用ディレクトリとして認識してくれます。
んで、どこに設定されているんだろうかと調べていたら
Rails.public_pathという設定に行き着きました。
それだったらRails.public_pathに何か設定する方法があるだろうと思っています。
サーバ側の設定なんでしょうか?
仮にサーバだとしてRailsはいつRAILS_ROOTをサーバに渡すんでしょう。
0833nobodyさん2009/08/18(火) 18:27:06ID:???
夜になったらrails仙人が来るから、それまで待っててね
0834nobodyさん2009/08/18(火) 19:38:30ID:???
>>830
mongrel 使ってるんだよね?
08358302009/08/18(火) 20:26:23ID:xQbi8Iqy
そうです。
0836nobodyさん2009/08/19(水) 00:27:33ID:???
使ったことはないがmongrelなら「--prefix」というオプションがある
これに指定すればいけるんじゃないだろうか
時間がなくて試せないので、動作報告をくれるとうれしい
08378302009/08/19(水) 02:50:08ID:/4UU0U8g
--prefixは知っていますがうまく動作しません

mongrelで--prefixを指定したときはブラウザがアクセスするときのURLが変化します。
例えば、--prefixなしの時
http://localhost:3000/order
等としてアクセスしますが、--prefix=/fooをつけると
http://localhost:3000/foo/order
という風になります。
私の期待しているfilesystem上のPATHを変化させる方法ではありません
08388162009/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 %>
08408392009/08/19(水) 13:22:50ID:???
>>839のつづき

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
08418392009/08/19(水) 14:31:14ID:???
>>839-840ですが、accepts_nested_attributes_for を使うことで解決いたしました。

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:???
>>837
うわ、すまんかった。
このオプションでいけるんじゃないだろうか。

--root PATH
Set the document root (default 'public')
0843nobodyさん2009/08/20(木) 20:29:11ID:OSASGkcC
>>120
遅レスですが、同じく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:???
マゾですかっwww
08458302009/08/23(日) 04:36:10ID:vSt0R6A2
>>842さんご紹介の--rootでうまくいきました。
mongrel_rails start -r test/public
でtest以下のpublicを読んでくれました。
0846nobodyさん2009/08/23(日) 09:17:36ID:???
Rails3っていつリリースされるって情報は出てないんですか?
0847nobodyさん2009/08/23(日) 15:34:00ID:???
先日のルビー会議でrails3をリリースするという情報はあったがそれ以降何も聞かんな
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:???
Railsは頼むから前方互換性を高めてくれよん

PHPみたいなことはや(ry
0850nobodyさん2009/08/27(木) 18:24:52ID:???
Railsと比べればPHPのほうが遥かに互換性高いけど
0851nobodyさん2009/08/27(木) 20:24:29ID:???
yes
0852nobodyさん2009/08/27(木) 22:55:33ID:???
>>849
無駄に内部を弄るから互換性で苦しむはめになるんだよ
0853nobodyさん2009/08/28(金) 06:03:30ID:???
フレームワークと言語仕様を比べることに何の違和感も持ってないのか
0854nobodyさん2009/08/28(金) 06:51:07ID:???
>>853
同意。
PHPは言語で、Railsはフレームワーク。
比べるなら、PHPとRubyを比較するべきだよな。
まぁ、>>>849はそれすら分かっていないのかもしれないが。
0855nobodyさん2009/08/28(金) 10:44:15ID:???
849はPHPも知らない
知っているのは伝聞のFUD
0856nobodyさん2009/08/28(金) 11:31:52ID:???
PHPは互換性を維持するために全身速度が遅く、色々縛られているが、
rubyはぶっちゃけ、過去のことなど放り投げちまう開発姿勢だから名、

互換性で比べたらphpに軍配上がっちまう罠、
比較対象として持ち出した奴が バ・カ
0857nobodyさん2009/08/28(金) 15:27:38ID:???
yakinikunoはや(ry
0858nobodyさん2009/08/29(土) 14:58:31ID:???
kawazakananoハヤ
0859nobodyさん2009/08/29(土) 15:02:17ID:???
PHPで10行以上のコード書きたくない><
PHPで2ファイル以上のコード読みたくない><
0860nobodyさん2009/08/29(土) 15:12:31ID:???
PHPスレかと思ってしまったではないか
0861nobodyさん2009/09/02(水) 16:56:18ID:???
互換性は別にいいが機能低下は避けていただきたい
0862nobodyさん2009/09/03(木) 08:08:48ID:801E0K0+
こんにちは。

他のスレッドで質問したのですが、スレッド違いということで、
再度、ここに書かせて頂きます。

前の開発者がRuby Railsでサイトを構築しました。

今回、私が、別の機能を付け足すことになりましたが、
私はRuby Railsを知りませんので、/manage/フォルダ以下に、
PHPで開発することになりました。
/manage/以下に、.htaccessを設定したのですが、動かず、404ページが返ってきます。

自分なりに色々調べた結果、Passenger/mod_railsを使っているため、
/manage/の.htaccessが、それによって上書きされているようです。


RailsAllowModRewrite On
を使えば、なおるようなことを言われたのですが、
/manage/.htaccessでそのように設定しても、/manage/.htaccessに設定してあることが
有効になりません。

どなたか知っていたら教えて頂けないでしょうか。
よろしくお願いします。
0863nobodyさん2009/09/03(木) 08:48:46ID:???
ぜんぜん具体的じゃないからさっぱりわからん。
0864nobodyさん2009/09/03(木) 09:10:30ID:???
ドキュメントルートがpublic_htmlではないということはないだろうか。
普通Railsのアプリ一式が入っているディレクトリをRAILS_ROOTとすると、
ドキュメントルートはRAILS_ROOT/publicにするのだが。
Passengerを使ってるのなら、ApacheのDocumentRootディレクティブを調べてみてほしい。
0865nobodyさん2009/09/03(木) 11:28:15ID:???
http://www.modrails.com/documentation/Users%20guide%202.0.html

5.8.3. RailsAllowModRewrite <on|off>
<略>
This option may occur once, in the global server configuration or in a virtual host configuration block.
<略>

ってことで、apache設定の最上位か、<VirtualHost></VirtualHost>の中に
しか書けない。

0866nobodyさん2009/09/03(木) 11:52:21ID:???
http://pc12.2ch.net/test/read.cgi/tech/1249687283/488-
0867nobodyさん2009/09/03(木) 14:10:11ID:???
下記のような問題なのですが、みなさんどうしてらっしゃいますでしょうか?
[Rails] ちょっとしたタイプをどこに置くか - capsctrldays(2006-05-30)
http://capsctrl.que.jp/kdmsnr/diary/20060530.html#p01

お聞かせ願いたいです。

具体的には、上記サイトにもあるのですが、
 1:男性
 2:女性

 1:承認待ち
 2:活動中
 3:削除

のような定数とActiveRecordを使う上での兼ね合いといいますか。

・配列(Hashとかにしちゃう)
・テーブルにしちゃう

どちらがオススメでしょうか?
0868nobodyさん2009/09/03(木) 14:16:09ID:???
table
08698622009/09/03(木) 14:21:23ID:4G6aJPkU
ご返信ありがとうございます。
>>864
そうです。
分かりやすく言うために、public_htmlといいましたが、
実際は、RAILS_ROOT/publicになってます。
で、今回、RAILS_ROOT/public/manage/フォルダにPHPで開発することになり、
(私はPHP言語しか知りません)
RAILS_ROOT/public/manage/.htaccessを作成したのですが、
.htaccessが作動しないのです。
私がRuby Railsの知識が全くないので、どのような設定になっているか分からない状況です。

>>865
httpd.confの中では、<virtual></virtual>はコメントアウトになっています。
ただ、Include /etc/httpd/conf/lxadmin/lxadmin.confとかいてあり、
lxadmin.confの中には、いくつかのconfファイルがincludeしてあります。
そのうちの一つのdefault.confには、下記の<virtual>タグが記載されています。
<VirtualHost \IP address:80\>
DocumentRoot /home/lxadmin/httpd/default/
servername default
ServerAlias default.*
<Ifmodule mod_userdir.c>
Userdir "public_html"
</Ifmodule>
</VirtualHost>
この中にRailsAllowModRewrite <on|off> を記入すれば宜しいのでしょうか。

無知な者でご迷惑おかけします。
もし対処法をご存知な方がいらっしゃいましたら、お知らせください。


よろしくお願いします。
0870nobodyさん2009/09/03(木) 14:43:27ID:???
>>869
> 分かりやすく言うために、public_htmlといいましたが、
> 実際は、RAILS_ROOT/publicになってます。

間違った情報がわかりやすいわけないだろ。
逆の立場だったらわかりやすいと思うか?
おまえの中では勝手に同じものと処理してるかもしれんが、
他人がそんなことわかるわけないだろ。
質問するならちょっとは考えろ。無知とか関係ない。

> Passengerを使ってるのなら、ApacheのDocumentRootディレクティブを調べてみてほしい。

DocumentRoot /home/lxadmin/httpd/default/

こうなってるわけだが、ちゃんとレスを見たか?
RAILS_ROOT/publicはドキュメントルートとして機能してないと思うが。

「実際は、RAILS_ROOT/publicになってます。」
↑
これまでわかりやすく書いたのなら、
掲示板じゃわからんから周りの友達にでも聞け。
08718672009/09/03(木) 15:05:15ID:???
>>868
おー、tableですか。


DB使わないスクリプトなんかだと、Hashなんかでやってしまい、その延長でついHashにしてしまいそうになるのですが、
テーブル使う利点ってなんなんでしょうか?
ActiveRecordを使えるから、ってことでいいんでしょうか?
あと、viewでcollection_selectがそのまま使える、とか。
08728622009/09/03(木) 16:46:48ID:Gs6kTm0I
>>870

ご回答ありがとうございます。
DocumentRootがどこなのか、分かりませんでした。
/home/lxadmin/httpd/default/ の下に、
/home/lxadmin/httpd/default/manage/とやれば良いということでしょうか。
/home/lxadmin/httpd/default/phpinfo.php
を作成し、mydomain.com/phpinfo.phpとアクセスしたのですが、
404が返ってきました。

Ruby Railsの為、私の知っている通常のサーバーの設定でない為、よく分かりません。
私、海外の田舎でプログラマをやっている為、あまりこの分野の友達がいません。
もし、ご存知の方がいらっしゃいましたら、教えて頂けないでしょうか。
お手数かけて申し訳ございません。

よろしくお願いします。
08738622009/09/03(木) 17:04:03ID:Yl0KYuqm
付け足しですが、
実際、色々動いてるファイルは、
/home/admin/vhosts/mydomain.com/public/
配下に設置してあります。

お手数かけましてすみません。
よろしくお願い致します。
0874nobodyさん2009/09/03(木) 20:34:55ID:???
>>872
マルチうぜぇ
ttp://pc12.2ch.net/test/read.cgi/tech/1249687283/488-491
ttp://pc12.2ch.net/test/read.cgi/tech/1249687283/554-555

htaccessかPHPのスレに行け。
0875nobodyさん2009/09/03(木) 22:53:48ID:???
>>867
データの多さに関係なく ActiveRecord で管理するのが一番融通が利くし楽でしょ。
だけど初心者の人はたいてい配列にしてマジックナンバーを撒き散らすよ
酷いのになると配列(の定数)すらない場合も。
0876nobodyさん2009/09/04(金) 00:55:17ID:???
>>872
sine
0877nobodyさん2009/09/04(金) 08:19:25ID:???
>875
でもActiveRecordになるとreadだけじゃなくてwriteもできるんだぜ。
定数ということを表現できてないじゃないか。
■ このスレッドは過去ログ倉庫に格納されています