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

Ruby on Rails のスレ が

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/04/06(日) 04:59:29ID:???
無いのはどうしてだろう?
消えたのか?
流行ってないのか
死亡
0756nobodyさん2008/08/06(水) 23:25:36ID:Slgk/mdN
>>755
これはいいページですね!
0757nobodyさん2008/08/06(水) 23:28:33ID:???
>>747
そりゃ残ると思うけど。
クリアしたければJavaScriptかなんかで。
07587472008/08/07(木) 00:46:33ID:???
>>757
そういうものなんですね。安心しました。。
:successを使ってJavaScriptでクリアしようと思います。
ありがとうございました _ _
0759nobodyさん2008/08/07(木) 01:30:14ID:???
>>754
PHPもね
0760nobodyさん2008/08/09(土) 22:32:36ID:???
acts_as_searchableは、2.1でも使えるの?
0761nobodyさん2008/08/11(月) 01:51:16ID:???
2.1使いの人に伺いますがnamed_scopeっていい感じですか?
さっさと2.1に上げて使うべきですか?
0762nobodyさん2008/08/11(月) 17:50:32ID:???
2.1の良いところは、migrationがUTCベースになったこと。便利だよ。
named_scopeも多用するけど、べきってほどじゃない。
0763nobodyさん2008/08/11(月) 20:39:06ID:???
UTCのマイグレーションってなんで便利なの?
0764nobodyさん2008/08/11(月) 21:07:19ID:???
シーケンシャルアクセスだけより、ランダムアクセスも出来たほうが、
良いジャマイカ
0765nobodyさん2008/08/11(月) 21:45:10ID:???
migrationが009まであるとき
Aさんが自分とこでdb/migrate/010_create_foo.rb
Bさんが自分とこでdb/migrate/010_add_hoge_to_bar.rb
をつくってお互いにコミットしたときにウボァーとならなくて済む。

0766nobodyさん2008/08/11(月) 22:05:09ID:???
一人で複数のrailsアプリを開発しているときでも、migrationがコピーできる
のは、ありがたい。
0767nobodyさん2008/08/12(火) 01:47:05ID:???
UTCってことは、日本時間じゃないんだよな?
0768nobodyさん2008/08/12(火) 05:07:29ID:???
そりゃそうだ。
001- 002- と同様、ただのIDだから日本時間である必要ないし。
0769nobodyさん2008/08/12(火) 09:00:28ID:KgBJ4o74
Ruby1.8.7-p71とrails1.2.6、2.1.0は自分の環境で動いてるんだけど、不具合出た人いる?
0770nobodyさん2008/08/12(火) 12:08:45ID:/IFRJz9p
ruby 1.86 p111 rails 2.1.0を使っています。application_helper.rbで以下の二つのメソッドをそれぞれのクラスに追加しました。
class ActiveSupport::Multibyte::Chars
def abbreviate(length)
return self if length >= self.length
return self[0, length] + "..."
end
end

class Array
def to_dls
return self.map{|s| s.gsub("^", "?x5e;")}.join("^")
end
end
前者は"test".abbreviate(20)とすることで正常に動作したのですが、
後者を["test^1", "test^2", "test^3"].to_dlsとViewで呼び出すと以下のエラーが発生します。
undefined method `to_dls' for ["test^1", "test^2", "test^3"]:Array
Arrayクラスにメソッドを追加してViewの中で使用するにはどうしたらいいのでしょうか?
どなたか教えていただけると嬉しいです _ _
0771nobodyさん2008/08/12(火) 23:53:24ID:???
>>770
詳しく読んでないが、
ApplicationHelperでそのモジュールをinclude してみてはいかがだろう?
0772nobodyさん2008/08/12(火) 23:54:16ID:???
>application_helper.rbで以下の二つのメソッドをそれぞれのクラスに追加しました。

て書いてあった・・・

sudo rm -f /*
してくるorz
0773nobodyさん2008/08/13(水) 03:57:20ID:???
>>770
ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-cygwin]
rails 2.1
webrick
だと、普通に動いたんだけど。

a.html.erb: <%= debug ["test^1", "test^2", "test^3"].to_dls %>
結果: --- "test?Hx5e;1^test?Hx5e;2^test?Hx5e;3"
0774nobodyさん2008/08/13(水) 18:44:55ID:???
rm -f /*じゃ、多分実害はない。OSによるけど。
0775nobodyさん2008/08/13(水) 21:04:42ID:???
>>774
Fontファイルが消えてGUIが死ぬ
Youtubeにあった気がするぜ
0776nobodyさん2008/08/14(木) 18:01:59ID:???
>>775
/ にフォントファイルが置いてあるの?
0777nobodyさん2008/08/14(木) 18:11:03ID:???
同一サイトで複数のアプリ動かすのに
mongrel_clusterに--prefix rails_app付けて
apacheのProxyPassディレクティブで、
/rails_app以下は、mongrelに処理させるよう
proxy設定したんだが、

アプリ自体は正常に動くが、
cssファイルが読みこめなくて、
ActionController::RoutingError (No route matches "/stylesheets/scaffold.css"
というエラーログが出る。

仕方がないので、apacheのDocumentRoot /var/www以下に
ln -s rails_app/public rails_app
こんなして、cssなどの静的ファイルはapacheに読みこませる
%8
0778nobodyさん2008/08/14(木) 18:14:11ID:???
ようにしたんだが、もう少しスマートな方法はないでしょうか?
0779nobodyさん2008/08/14(木) 21:03:35ID:???
>>777
バーチャルホスト
0780nobodyさん2008/08/14(木) 22:56:13ID:???
>>779
ありがとうございます。
VirtualHostは同一サイトでなくなるので
Proxyは必須だと思ってます。
lnがなくせればいいんですが。
0781nobodyさん2008/08/14(木) 23:04:22ID:???
>>780
prefixより、サブドメインでバーチャルホストの方がSEO的にもいいし、色々と楽じゃね?
0782nobodyさん2008/08/15(金) 04:00:38ID:???
>>777
mod_rewrite
0783nobodyさん2008/08/15(金) 13:03:03ID:???
>>781
DNSがない環境なので、
サブドメインのほうが大変そうです。
>>782
thx 勉強してきます。
0784nobodyさん2008/08/17(日) 23:39:19ID:???
> サブドメインでバーチャルホストの方がSEO的にもいいし、

なぜ?

検索したとき、同じドメインのものはひとつしか表示されない。
ドメインが違うと二つとも表示される。

でもサブドメインにしたら、違うドメインと認識されるため、
ページをアップするためのポイントが分散される。

結果、二つとも表示順位が下がる。
0785nobodyさん2008/08/18(月) 00:39:36ID:???
>>784

ヒント:被リンク数
0786nobodyさん2008/08/18(月) 04:15:56ID:???
被リンク数? ドメイン分けると分散されるね。
しかも、新たにサブドメインを作った場合、そのサブドメインの
ページランクは低いから、まったく意味ないね。
0787nobodyさん2008/08/18(月) 10:52:28ID:???
SEOの話はスレ違い。
ど素人の話など聞きたくない。
0788nobodyさん2008/08/18(月) 13:18:23ID:???
ああ、サブドメインで分けるのは最悪だと思う。SEOからしたら。
0789nobodyさん2008/08/18(月) 16:16:09ID:???
とりあえずサブドメインとやらの定義を示してもらわなきゃねえw登録日か?w
0790nobodyさん2008/08/18(月) 20:17:03ID:???
SEOは、健康バラエティ番組的なノリの世界だからな。
○○が健康にいいと聞けば、その前提条件や効果範囲など
ちゃんと調べもせずに○○ばっかり食べるようなそんな世界だ。
○○のとりすぎはよくないと言った数ヵ月後に○○にはこんな効果が!とかやるような世界だ。

サブドメインにする明確な理由があるほど、コンテンツ内容が独立していて、
それ単体で一つのサイトとしてやっておかしくないような場合。

つまり、SEOとかそんなまじないみたいなものは気にせずに、
サブドメインを使うべきところにサブドメインを使えばいい。

検索エンジンは、そういう自然なサブドメインの使い方に対して
ポイントを与えている。
0791nobodyさん2008/08/18(月) 20:46:46ID:???
Railsで自作のmoduleとか定数まとめたファイルとかって、普通どこのディレクトリに置くもん?
複数のControllerから使うからまとめときたいんだけど・・・。
0792nobodyさん2008/08/18(月) 22:54:04ID:???
RAILS_ROOT/libが $: に含まれてるからそこにおけばいいんじゃない?
名前をお約束通りに付けておけばconst_missingを捕まえて勝手にrequireするし。
0793nobodyさん2008/08/18(月) 23:21:04ID:???
helperって手もあるかな
0794nobodyさん2008/08/18(月) 23:58:31ID:???
ときどきconfig/initializers/*.rbで気に入らないところとかに
モンキーパッチ当てるんだけど、initializeじゃないし、やっぱ行儀悪い?


07957912008/08/19(火) 23:50:18ID:???
>>792
>>793

レスありがとう。

今はlibの下に置いてApplicationControllerでincludeしてるんだけど、「お約束通り」の命名にすればそれが不要ってこと?
定数名にRailsの命名規約があるの??
0796nobodyさん2008/08/20(水) 08:25:05ID:???
定数というか、モジュール/クラス名がconst_missingのとき、
その名前をオール小文字/単語境界をunderscore化、ネストをディレクトリ
とみなしたファイルがrequireされる。

たとえば、いきなりinclude FooBar::Bazとか書いて未定義の定数を使うと、
require 'foo_bar/baz' される。


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なら出ないはず。
■ このスレッドは過去ログ倉庫に格納されています