トップページ⇒php
990コメント286KB

Ruby on Rails のスレ が

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/04/06(日) 04:59:29ID:???
無いのはどうしてだろう?
消えたのか?
流行ってないのか
死亡
0797nobodyさん2008/08/20(水) 10:29:51ID:???
Rubyスレから誘導されて来ました、

ruby script/server -p 80
のコマンドを実行し、ポート80を使っていたapacheを停止させたところhttp://localhost/testでも接続できるようになりました。
これはapacheの代わりにmongrelが動いているということでしょうか。
初歩的な質問ですが、よろしくお願いします。
0798nobodyさん2008/08/20(水) 11:15:24ID:???
>>797
YES
apacheが動いてたら、ポート競合してRailsアプリ起動しないから安心汁!

07997972008/08/20(水) 13:51:33ID:???
>>798
安心しました、ありがとうございます。
0800nobodyさん2008/08/20(水) 16:51:06ID:???
存在しないファイルを連続で取得する「行儀の悪いクローラ」がいるん
だけど、上手くアクセス制限する方法は、ありますか?
相手は動的IPなので、アドレスで制限することは出来ません。

ActionController::RoutingError で、404.htmlがレンダリングされること
になるんですが、RoutingErrorをカウントして閾値を超えたら一定時間ban
みたいなことをしたいのですが、方法が分かりません。
0801nobodyさん2008/08/20(水) 21:23:33ID:???
>>796
なるほど!
その方がRailsっぽくてカッチョイイね。
詳しい解説ありがとう!
試してみるよ。
0802nobodyさん2008/08/20(水) 21:28:23ID:???
RoutingErrorはrescure_fromで捕まえられないんだよな。

AC::Base#rescue_actionをオーバーライドしてRoutingErrorだったら
DBに記録したりbanしたりすればいいんじゃないだろうか。
解除の方は定時処理で一定時間経過しているものをクリアする。

0803nobodyさん2008/08/21(木) 15:59:46ID:???
application.rbにrescue_actionを定義すれば、いいんですね。
上手く実装することが出来ました。ありがとうございます。
0804nobodyさん2008/08/21(木) 18:35:44ID:???
定義というかオーバーライドだから、自分で処理しないときは
super呼ぶ必要がある、はず。
0805nobodyさん2008/08/24(日) 15:45:14ID:VqgKvUuy
自宅サーバで友人に自由にRailsアプリを配置させたいのですが
Passengerだと鯖管理者がその都度VirtualHostを切るしかないですかね?

mod_fcgidだったら.htaccessで後はご自由に、って
できたのですが、時代に逆行しているような気がして。

何かよい方法あれば教えてください。
0806nobodyさん2008/08/24(日) 20:38:13ID:???
>>805

Virtualを切るスクリプトを書いてしまうというのはどうだろう?
0807nobodyさん2008/08/25(月) 00:18:17ID:???
きっと webminやらvirtualminでできる。かもしれないw
0808nobodyさん2008/08/25(月) 16:36:18ID:???
質問です。
mongrelを使っているのですが、public/javascripts/iepngfix.htcの読み込みが
css内のbehavior経由でできません。
IEツールバーにはAccess is deniedと怒られます。
パーミッションは644、ファイルパスを直接ブラウザに入れると普通にDLできます。
なぜだかわかりません。どなたかご教示願います。
0809nobodyさん2008/08/25(月) 16:45:11ID:???
rw属性にしてみ?
08108082008/08/25(月) 16:47:54ID:???
>>809
rw属性って、パーミッションを666に変えるということですか?
0811nobodyさん2008/08/25(月) 19:41:08ID:???
おれはHTCはexeと同じぐらい危険なものという認識をしているのだが、
そもそもcss内から呼び出せるものなのか?
0812nobodyさん2008/08/26(火) 22:58:05ID:???
.htc の MIME-Type が設定されてないんでない。
0813nobodyさん2008/08/27(水) 10:59:43ID:???
既出かもしれんが

REXMLのDoS脆弱性
ttp://www.ruby-lang.org/ja/news/2008/08/23/dos-vulnerability-in-rexml/

Railsユーザは一応パッチ当てとけ
0814nobodyさん2008/08/27(水) 21:31:53ID:???
>>813に関連して、
「漏れのRailsアプリではREXML使ってないからいいやー」
と思っている奴は、それ勘違いだからな。
0815nobodyさん2008/08/27(水) 21:37:32ID:???
Railsの中で
require 'rexml/document'
してる所結構あるよ

script/consoleで
サンプルコード再現確認したけど、
見事に固まってワロタwwww

動いてるRailsアプリにPOSTしちゃダメだぞ!!
0816nobodyさん2008/08/27(水) 21:52:17ID:???
結構あるけど、大抵はテストでタグassertするところなんだよね。でも、
Content-TypeがxmlなデータをPOSTされると、
actionpack-2.1.0/lib/action_controller/base.rb の
@@param_parsers[Mime::XML] が :xml_simple なので、
POSTボディ解析に XmlSimpleクラスが使われる。
XmlSimple自体はactivesupport-2.1.0/lib/active_support/vendorにある。
こいつがREXML使ってるから、やばいPOSTデータで死ねるんだな。

0817nobodyさん2008/08/27(水) 22:04:05ID:???
>>816
XMLのPOST許可って外部APIの受け口とか、他鯖のデータ受け口だし、
画面上から気づく所が無いのが唯一の救いだよな。
(まぁ外部APIや他鯖連携使ってるって分かるようなサイトだと入り口見つかるのも時間の問題だけど・・・)

久々の祭りでちょっと面白かった

(ちら裏)
個人的にはxml_simpleは速度がピュアREXMLより遅いから嫌いw
0818nobodyさん2008/08/29(金) 17:36:06ID:???
form_forブロックの中で独自の入力フォームを作りたい時は
どうすればいいのでしょうか。

<% form_for @foo do |f| %>
  <%= f.bar_field %><%# ←これを追加したい %>
<% end %>
0819nobodyさん2008/08/29(金) 17:46:11ID:???
×入力フォーム
○入力フィールド
でした
0820nobodyさん2008/08/29(金) 20:38:09ID:???
>>818

「独自の」ってのがいまいちわからないんだけど、textだとかcheckboxのような種類のことを言ってる?
それとも、@fooのプロパティのこと?
0821nobodyさん2008/08/31(日) 17:02:50ID:???
>>818
>独自の入力フォーム
「入力フォームを生成する、独自のヘルパー関数」のことか?
0822nobodyさん2008/08/31(日) 19:38:00ID:???
遅くなってごめんなさい

>>818
その通りです。
例えば元から用意されているtext_fieldを拡張したい時などに、
どうすればRails2.*の作法に従えるかわかりません><
08238222008/08/31(日) 19:39:45ID:???
× >>818
○ >>821
の間違いでした。何度もすみません
0824nobodyさん2008/08/31(日) 19:47:42ID:???
text_fieldのソースパクッて
拡張加えて、

def ext_text_field
のようにヘルパー内でメソッド作っちゃえば?

個人的にCSRF対策に
form_tag呼び出されたら、自動的に
トークンのhiddenタグが呼び出されるように
form_tag拡張してるYO。
(Rails2のCSRF対策はちょっと弱いからw)
0825nobodyさん2008/08/31(日) 20:30:27ID:???
よかったらどの辺が弱いのか教えてもらえないですか?
0826nobodyさん2008/08/31(日) 20:40:15ID:???
入力→確認→完了
の流れを一度正常にやってから

確認画面にBackとかで戻ると、フォーム期限切れの画面出るけど、
そこでF5押したら普通にPOSTが効く

セッションが生きてる間は、
Railsが生成したトークンが有効になってしまうんよ。

個人的に一連のこういう流れは、ワンタイムトークン使うべきだと
思うんだ。

あくまでも個人的なオナニーだから、使わなかったから
何だって訳じゃないけどw
0827nobodyさん2008/08/31(日) 21:35:24ID:???
確かに二重送信などを防げないとは思うけれど、
CSRF対策としては別に問題ないのでは。
0828nobodyさん2008/09/04(木) 23:19:54ID:???
rails(2.1.0)で「新規レコード追加→追加されたレコードのID取得」って
どうやってやるのでしょうか。

「Hoge.find(:first, :order=>"id desc").id」で
一応は動いているのですが、ちょっと気持ち悪いです。

select last_insert_id() とか select lastval()のような
追加された値を明示的に取得する方法があったら知りたいです。
(この際、SQL直書きでも構いません)
0829nobodyさん2008/09/04(木) 23:29:29ID:???
hoge = Hoge.new
hoge.save
hoge.id
0830nobodyさん2008/09/05(金) 00:10:47ID:???
この時間に即レスありがとうございます。
出来ました&動きました。

……そーか、こんな単純なのか。
調べても出て来ないわけだ……。
0831nobodyさん2008/09/05(金) 04:08:40ID:???
そうなんだよなー
俺も知らなかった時はsql書いてたw
0832nobodyさん2008/09/05(金) 08:18:54ID:???
RailsによるアジャイルWebアプリケーション開発(原書でもいいけど)は買っとくべきだと思ふ。
0833nobodyさん2008/09/05(金) 08:19:40ID:???
そもそもidが順番に増えていく保証はない(削除で空いたら再利用する
かもしれない)ので、orderで現在の最大値を持ってきたらあぶないと思う。
0834nobodyさん2008/09/05(金) 12:30:32ID:???
空いたら再利用ねぇ・・・
それってIDじゃ無いと思うw
0835nobodyさん2008/09/05(金) 13:26:29ID:???
今はどうなってるかわからないけど、前にsqlite3がid再利用してたよ。
destroyした後、createしたら同じidが振られた。

0836nobodyさん2008/09/05(金) 15:07:44ID:???
というか、DBの識別子をユニークなものとして設計すること自体が
間違ってるような。
0837nobodyさん2008/09/05(金) 21:17:25ID:???
>>836
なんで?
0838nobodyさん2008/09/05(金) 21:34:50ID:???
激しくどうでもいいな。
0839nobodyさん2008/09/05(金) 22:49:26ID:???
わざとらしい例ですまんが、MySQL 5.0.45にて:

ISAMテーブル/BDBテーブルでauto incrementカラムの最大値を持つレコードが削除されると、
その値は再利用されるそうな。

mysql> create table samples (id tinyint auto_increment, primary key (id)) engine=ISAM;
mysql> insert into samples values(126);
mysql> insert into samples values(NULL);
mysql> select * from samples;
+-----+
| id |
+-----+
| 126 |
| 127 |
+-----+
2 rows in set (0.01 sec)
mysql> delete from samples where id = 127;
mysql> insert into samples values(NULL);
mysql> select * from samples;
+-----+
| id |
+-----+
| 126 |
| 127 |
+-----+
2 rows in set (0.01 sec)


0840nobodyさん2008/09/05(金) 23:22:39ID:???
再利用がどうこうより、レースコンディションを考慮するべき。
0841nobodyさん2008/09/06(土) 02:08:21ID:???
http://www.example.com/images/side.gif?1219634343

上記のようなrailsが吐き出す画像パスのquery_stringを消す方法はあるのでしょうか?
0842nobodyさん2008/09/06(土) 02:10:07ID:???
>>841
HTMLで書けばいいじゃない。

HTMLで書く方が負荷は若干低いよ
0843nobodyさん2008/09/06(土) 10:46:23ID:???
Rails2ってDB操作しようと思ったらマイグレーションで
テーブルを作っていないといけないんですか?

直接作ったDBにレコードを挿入しようとした時にエラーになり
マイグレーションで作ったDBにはうまくいったので疑問に思いました
0844nobodyさん2008/09/06(土) 11:18:48ID:???
>>841
ENV['RAILS_ASSET_ID'] = ''

>>843
直接造ったテーブルがRailsの規約に沿っているか、
Railsのほうでテーブル名やプライマリキーの設定を変えるかすれば使える。
0845nobodyさん2008/09/06(土) 17:17:41ID:???
>>844
そうなのかなぁ、テーブル名とプライマリーキーの設定はモデルでしたんだけど・・
何か設定が正しくなかったのかな

あと、そのプライマリーキーが数値じゃなくてもOKだよね?
0846nobodyさん2008/09/06(土) 21:37:54ID:???
>>845
auto_incな数値じゃないとだめ
0847nobodyさん2008/09/07(日) 13:35:50ID:???
>>846
そうですか、それが原因だったみたいですね
今、既存のテーブルを使いたいんですが、そのテーブルの主キーがvarcharだから困りましたね
そういう場合でRailsを使ったシステムを作りたいなら、どうしたらいいでしょうか?

やっぱりテーブル構造の変更を行うしかないでしょうか?
0848nobodyさん2008/09/07(日) 13:45:46ID:???
主キーなしでモデルをつくることも出来るけど、関連を使おうとするとかなり苦労しそうだなぁ。
0849nobodyさん2008/09/07(日) 16:08:45ID:???
ラッパーテーブル作ったら?
primary keyとそのテーブルの主キーだけの
0850nobodyさん2008/09/07(日) 17:57:32ID:???
主キーを別に追加して
元のPKはUNIQUEに変更、では駄目?
0851nobodyさん2008/09/07(日) 21:03:10ID:???
いろいろな対応策を考えてもらい、ありがとうございます

>>850 が今のところ一番わかりやすく、現実的かなと思いました

直接SQLを発行すれば一応テーブルの変更はいらない・・・ですよね?
でもRailsのアプリでそれはダサいかな?
0852nobodyさん2008/09/07(日) 23:28:42ID:???
どこまでもORマッパの力で突き進んでみるのも一興だが、
SQL直書きだって決してダサくはないよ。

AR::Base.findのオプション(:selectとか:joinとか:groupとか)で対応できる範囲なら
そうしておいたほうがRubyレベルでいじりやすいだろうけど。
0853nobodyさん2008/09/08(月) 22:49:53ID:???
restful_authenticationについて質問です。
これのREADMEにはRails1.2.6以上で動くと書いてあるのですが
実際に1.2.6で使ってみると「authenticate_with_http_basicがない」
とエラーになります。
調べてみると、このメソッドはRails2で実装されてるようです。
READMEが間違ってるってことでいいんでしょうか。
0854nobodyさん2008/09/08(月) 23:13:13ID:???
中まで見てないけど、GitHub見たら、
'Classic' (backward-compatible) version
http://github.com/technoweenie/restful-authentication/tree/classic
というのもあるようだ。

0855nobodyさん2008/09/09(火) 01:59:13ID:???
>>841
productionなら出ないはず。
0856nobodyさん2008/09/09(火) 11:33:25ID:???
ActiveRecordで、データベースからselect()してきたrowを文字列から適切な型に変換している箇所はどこでしょうか。
たとえば select * from users の結果として取得したrowはたとえば ["1", "name", "2000-01-01"] になっていますが、
それを [1, "name", Time.mktime(2000, 1, 1)] に変換してくれている箇所です。
自力でおっかけていたのですが、力つきました。
0857nobodyさん2008/09/09(火) 13:52:30ID:???
力が付いてよかった。
0858nobodyさん2008/09/09(火) 16:57:06ID:???
いじわるさん!
0859nobodyさん2008/09/09(火) 18:01:17ID:???
>>856
active_record/connection_adapters/abstract/schema_definitions.rb:631あたりだね。
RubyのクラスとDBの型の対応は
active_record/connection_adapters/mysql_adapter.rb:194とか見るといいよ。
0860nobodyさん2008/09/09(火) 18:02:43ID:???
>>859
あー、行はactiverecord-2.1.0だよ
0861nobodyさん2008/09/09(火) 21:54:59ID:???
>>851 だけど、テーブルの主キーが数値じゃなくても
テーブルに挿入いけたよ!みんな隠してたのか!
それとも俺の環境がおかしいのか
0862nobodyさん2008/09/10(水) 10:20:50ID:???
>>859
ありがとうございました!
0863nobodyさん2008/09/10(水) 18:49:59ID:???
#!/usr/bin/env ruby
require File.dirname(__FILE__) + "/../../config/environment"
loop do
 # ああだこうだ
 sleep(10)
end

こんなデーモン的スクリプトを使っているのですが、development環境の
場合にModelクラスなどを自動的にリロードさせるようにすることは
できますか?
0864nobodyさん2008/09/11(木) 00:30:26ID:???
やったことないけど、script/serverと同じ要領でいいなら、ループの先頭で
Dependencies.clear
ActiveRecord::Base.reset_subclasses
Class.remove_class(*Reloadable.reloadable_classes)
みたいなことをすればいいぽい。
細かいことはReloadableのドキュメントを読んでくれい。
0865nobodyさん2008/09/11(木) 10:38:04ID:???
2.0以降でform作るとauthenticity_tokenが自動で生成されるけど、あれの前後がdivで囲まれてるのは意味があるのかね?あれ消したいんだけどどうすりゃいいんだろ
0866nobodyさん2008/09/11(木) 12:34:31ID:???
>864

actionpack-2.1.0/lib/action_controller/dispatcher.rbの
cleanup_application

rails-1.2.6/lib/dispatcher.rbの
reset_application!

rails-?.?.?/lib/console_app.rbの
reload!

あたりを参考にしました。
1.2と2.0でやり方変わってるので注意ぽい。

0867nobodyさん2008/09/11(木) 13:48:44ID:???
>>865
form_tag_helper.rbの
extra_tags_for_formに

content_tag(:div, token_tag, :style => 'margin:0;padding:0')

と言うのがあってだな・・・
0868nobodyさん2008/09/12(金) 04:54:06ID:???
>>867
ソースぐらいmargin:0でgrepかけて見つけるべきですよね…
ありがとうございました!
08698532008/09/13(土) 00:04:36ID:???
>>854
えらく遅くなってしまって申し訳ありませんが、ありがとうございました。
まだ確認してませんが、今週末に見てみます。
0870nobodyさん2008/09/14(日) 17:27:51ID:???
redirect_toでリダイレクトされない事がよくあって困っています。
sessionが増えると発生します。
Railsだとよくあることなんですか?

0871nobodyさん2008/09/14(日) 17:36:01ID:???
それだけじゃ判断付けようがない
0872nobodyさん2008/09/15(月) 01:19:22ID:???
そこそこ大規模サイトやってるが

ない
0873nobodyさん2008/09/15(月) 01:25:57ID:???
>>870
returnつけてないとか?
0874nobodyさん2008/09/16(火) 20:32:22ID:xPoLLpKz
windowsでrailsを使用していますが、
「ruby script/...」とか「rake db:migrate」とかを実行すると、
非常にとんでもなくまたされます。正直、とんでもなく遅いです。
この現象はwindows環境ではみんな同じなんでしょうか?

もっとスクリプトの実行を速くする方法は無いでしょうか?

0875nobodyさん2008/09/16(火) 21:15:57ID:???
win上でcolinuxかandlinux動かして
その上でやると早いお
0876nobodyさん2008/09/16(火) 21:28:47ID:???
何がボトルネックなんだろな
0877nobodyさん2008/09/17(水) 00:08:32ID:NExepFrS
>>875
仮想OS(linux)上でrailsを使うと、RailsのIDE(NetBeansやAptana)
をWindows上で使っているので、データーを共有できないんです。

Windows上でRailsを使って開発している人は、
こんなに遅いのをみんな耐えているのかな?

「ruby script/generate scaffold ...」の実行に何で20秒もかかるんだ?
0878nobodyさん2008/09/17(水) 00:09:13ID:???
Railsは開発速いとは言っても限度がある。
デザイン組み込みとかだるいし。
値段はともかく、営業がギリギリの納期で仕事取ってくるので苦労してる。
プロジェクト間に時間的余裕が無い感じ。
一人プロジェクトを平行して回すとかになると辛い。

以上、チラ裏でした。
0879nobodyさん2008/09/17(水) 00:37:20ID:???
>>874
具体的な時間も示さないでそんなこと。。
0880nobodyさん2008/09/17(水) 02:06:49ID:???
>>877
windowsで開発してるけど、遅いよ。
linuxと比べると数倍遅いよね。
Core2Duoにすると、幾らかマシになるよ。
0881nobodyさん2008/09/17(水) 09:47:34ID:???
>>877
CoFSでマウントすりゃいいよ。
共有できるから、WinでRadRails使って開発、
ローカル鯖はandlinux上のLinuxで動いてるお

ここら参考に
ttp://d.hatena.ne.jp/wadap/20080602/1212419216
ttp://hyamada.ddo.jp/hiki/hiki.cgi?andlinux
0882nobodyさん2008/09/19(金) 09:02:47ID:???
windows上で動かしているwebrickに外部からアクセスできてしまう事に気づきました
どうすれば防げますか?
0883nobodyさん2008/09/19(金) 09:10:02ID:???
apacheかルータで弾けば?
0884nobodyさん2008/09/19(金) 09:49:33ID:???
これか?
http://www.itmedia.co.jp/enterprise/articles/0803/04/news008.html
0885nobodyさん2008/09/19(金) 14:07:33ID:???
>>882
:BindAddressのデフォルトが0.0.0.0(すべてのデバイス)なので、
newの引数で指定してループバックデバイス(127.0.0.1)だけを見るとか。
0886nobodyさん2008/09/19(金) 16:40:43ID:KktuWVpS
田中ばびえ
馬場道明死ね
0887nobodyさん2008/09/20(土) 13:08:56ID:???
ruby script/server webrick -b 127.0.0.1
0888nobodyさん2008/09/20(土) 13:12:00ID:???
あ、自分はWindowsじゃないし、mongrelが入ってるからwebrick指定した。
多分 ruby script\server -b 127.0.0.1 で良いと思う。
0889nobodyさん2008/09/21(日) 08:47:38ID:???
>>874
WindowsネイティブのRubyインタプリタがトロいだけ
irb単体を起動するだけでも相当時間かかるだろ?
ターミナルのOSがWindowsだからって
Windowsのコマンドプロンプトで開発してるわけじゃないだろ?
これだから最近のMac厨は激しく困る

最新のPCでも買いなよ
0890nobodyさん2008/09/21(日) 09:57:58ID:???
MacMacにしてやんよ
0891nobodyさん2008/09/21(日) 12:36:32ID:???
亀レスの割には何の回答にもなってない、単なる煽り乙>>889
0892nobodyさん2008/09/21(日) 15:56:23ID:???
>>887
ありがとうございます!助かりました
0893nobodyさん2008/09/24(水) 16:01:12ID:???
http://www.google.com/trends?q=cakephp,ruby+on+rails&date=all&geo=jpn&ctab=0&sort=1&sa=N

ruby on railsの存在感は
cakephpに比べるとかなり落ちている。
0894nobodyさん2008/09/24(水) 16:34:19ID:???
でってぃう
0895nobodyさん2008/09/24(水) 19:26:50ID:???
爬虫類乙!

PHP使用者が圧倒的に多いんだから、
伸びてくるのは当然だろう・・・
0896nobodyさん2008/09/24(水) 22:36:28ID:???
cakephp,railsで比較すると良いと思います。
■ このスレッドは過去ログ倉庫に格納されています