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

【RoR】Ruby on Rails Part15

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/07/07(土) 00:50:39.45ID:???

http://kohada.2ch.net/test/read.cgi/php/1329492840/

■参考サイト
<英語>
本家:http://rubyonrails.org
API document:http://api.rubyonrails.com/
開発者のblog:http://weblog.rubyonrails.org/
参考wiki:http://wiki.rubyonrails.org/rails
http://ruby-toolbox.com/
http://rubygems.org/
http://agilewebdevelopment.com/plugins/top_rated

<日本語>
Rails' wiki: http://wiki.fdiary.net/rails/

【ヘロク】 Heroku Part1 【PostgreSQL】
http://toro.2ch.net/test/read.cgi/hosting/1329378677/
0083nobodyさん2012/07/12(木) 00:58:20.80ID:???
はいはい。そんなこと言っても無駄だから。
答えてもらいたきゃよそ行きなよ。
0084nobodyさん2012/07/12(木) 01:07:07.42ID:???
>>83
実力のない煽り厨はオナって寝ろ
0085nobodyさん2012/07/12(木) 01:07:30.15ID:???
>>75
ポルノのアドレス紹介は違反…最高裁が判断 : 社会 : YOMIURI ONLINE(読売新聞)
http://b.hatena.ne.jp/entry/www.yomiuri.co.jp/national/news/20120711-OYT1T01116.htm
0086nobodyさん2012/07/12(木) 01:08:15.84ID:???
>>84
おもいっきりそれ>>82のことですやん
0087nobodyさん2012/07/12(木) 01:11:47.09ID:???
railsで論理削除をやるなら、acts_as_paranoid plugin - 富士山は世界遺産
http://d.hatena.ne.jp/fujisan3776/20080912/1221234453
0088nobodyさん2012/07/12(木) 01:22:22.51ID:???
railsにおけるデータファイルの出力三段階
画面で選択した検索条件に基づき、データをファイル出力したいという要件は、非常に多いですが、
基本に忠実な実装しないとメモリー不足等で大変な事になります。
http://kennyj-jp.blogspot.jp/2011/01/rails.html

Rails で MySQL を使うときの注意点 | METAREAL
http://www.metareal.org/2007/07/24/notes-on-rubyonrails-with-mysql/
SQL を二段階に分けるといい
まず、最初の SQL でレコードの ID だけを SELECT する(int だけなので、このときの一時テーブルはメモリ上に作られる)
次に、その ID で必要な TEXT や BLOB を SELECT するんだ(これは ID による単純な検索なので一時テーブルは使われない)
0089nobodyさん2012/07/12(木) 01:43:52.51ID:???



DHH: "if you're not signed up for the Vooza beta yet, you're so f*cking behind" | Hacker News
http://news.ycombinator.com/item?id=4229626
0090nobodyさん2012/07/12(木) 04:06:06.17ID:???
Scalaの闇 - Togetter  
http://togetter.com/li/308741
0091nobodyさん2012/07/12(木) 04:14:23.92ID:???
yokolet's notelets: Using Rails from Scala
http://yokolet.blogspot.com/2011/02/using-rails-from-scala.html
0092>>752012/07/12(木) 11:47:31.45ID:???
>>82は別人です。。。。。

どなたか >>75 について教えていただけないですか?
0093nobodyさん2012/07/12(木) 11:58:30.61ID:???
アフィカスはかえれよ
0094>>752012/07/12(木) 12:04:29.16ID:???
>>93
おまえもアフィカスだろ?
な??w

このスレの住人の本音↓

「こいつに教えたら、俺のアフィ利益が減ってしまう。それはそれは恐ろしい」
0095nobodyさん2012/07/12(木) 12:07:54.77ID:???
>>75
どのデータベースを使っているのかわからないが
基本的にはIDでやったほうが早いと言われていた

だが最近エンジニアの間では>>76氏が言うように実測で測らなければ
意味がないということが常識として広まってきている

0096>>752012/07/12(木) 12:10:06.51ID:???
このスレの住人=エロサイトをRailsで作ってる引きこもり
0097>>752012/07/12(木) 12:10:54.01ID:???
>>95
答えるなよクズ
0098>>752012/07/12(木) 12:11:36.31ID:???
これだから素人がつけあがる
素人に構うな
0099nobodyさん2012/07/12(木) 12:32:37.63ID:???
これだからIDない板は
0100>>752012/07/12(木) 12:49:26.13ID:???
誰か>>78について答えろ
0101nobodyさん2012/07/12(木) 13:11:13.20ID:???
ググれよ
0102nobodyさん2012/07/12(木) 14:56:34.53ID:???
なんで実測しろって答えを無視すんのだろうなあ…
0103>>752012/07/12(木) 21:50:36.26ID:???
railsが日本で流行らない理由は
俺らみたいに排他的な開発者が多いから
0104nobodyさん2012/07/12(木) 22:26:22.88ID:???
いい加減名前欄消してあげなよ
0105>>752012/07/12(木) 22:33:48.14ID:???
>>104
だな
0106nobodyさん2012/07/12(木) 23:52:13.93ID:???
会員制のログイン画面で
入力されるIDとパスワードを全てログに記録してる極悪人いますか?
0107nobodyさん2012/07/12(木) 23:55:30.69ID:???
前スレで
ライアンに連絡を取ったらRailsCastsでmailboxerを取り扱ってもらえることになったってホラをふいてた奴は涙拭けよw

外人様が俺たち黄色モンキーのお願いを鵜呑みにするはずねーことくらい皆知ってるぞ?w

俺らみたいなカスがライアン様に相手にされるはずがない
0108nobodyさん2012/07/13(金) 01:28:11.77ID:sN+YZR3N
http://www.facebook.com/shinichi.nishikawa/posts/440366292655125

パスワードをハッシュ化(暗号化)保存することを法律で義務化するくらいのことが必要だと思う
http://neta.ywcafe.net/000910.html
0109nobodyさん2012/07/13(金) 02:36:23.56ID:???
GitHub Takes $100M in Largest Investment by Andreessen Horowitz - Bloomberg
http://go.bloomberg.com/tech-deals/2012-07-09-github-takes-100m-in-largest-investment-by-andreessen-horowitz/

Salesforce.com to Buy Heroku for $212 Million to Tap Market for Ruby Apps
http://www.bloomberg.com/news/2010-12-08/salesforce-com-to-buy-heroku-for-212-million-to-tap-market-for-ruby-apps.html
0110nobodyさん2012/07/13(金) 02:53:20.49ID:???
>>108
エフセキュアブログ : いや、パスワードをしっかりSaltingしても十分ではない、
CUDA Accelerated PBKDF2を使用すべし
http://blog.f-secure.jp/archives/50669311.html
0111nobodyさん2012/07/13(金) 13:37:18.80ID:???
レンタルサーバー対応してるの?
そういや
0112nobodyさん2012/07/13(金) 15:17:52.82ID:???
CGIでは動かないと考えた方がいい
(動くことは動くが、遅すぎて使い物にならん)

herokuのようなサービスを使うか、VPSに載せるのが最近の定跡かな
0113nobodyさん2012/07/13(金) 17:35:47.44ID:???
Rails3からSinatraを呼ぶ - よしだメモ
http://d.hatena.ne.jp/rudeboyjet/20100919/p1

0114nobodyさん2012/07/13(金) 17:36:57.58ID:???

get '/' do
stream do |out|
out << "It's gonna be legen -\n"
sleep 0.5
out << " (wait for it) \n"
sleep 1
out << "- dary!\n"
end
end
http://www.sinatrarb.com/2011/09/30/sinatra-1.3.0.html
0115nobodyさん2012/07/14(土) 18:11:33.20ID:???
Ruby on RailsのScaffoldをカスタマイズして使いやすくする:CodeZine  
http://codezine.jp/article/detail/2912
0116nobodyさん2012/07/14(土) 21:28:16.16ID:???
ちょっと教えてほしいんですが

開発途中で要らなくなったモデル、コントローラー、ビュー一式がある場合は
普通にそれぞれのファイルを削除して
ルーティングさえ直せばオッケー??
0117nobodyさん2012/07/14(土) 21:42:03.23ID:???
それでOK
0118nobodyさん2012/07/14(土) 21:56:25.99ID:???
>>117
テストとかfixtureのほうとか消さなくていいのかな?
それとMySQLの該当テーブル
0119nobodyさん2012/07/14(土) 22:14:17.51ID:???
rails destroy XXX で関係するのばっさり消してくれるよ

rails generate model page title:string ....
みたいなモデルを消したければ
rails destroy model page
でmigrationコードからテスト/fixtureまで消してくれる。
0120nobodyさん2012/07/14(土) 22:19:29.03ID:???
>>119
コントローラーとviewは手動削除でOkですか?
0121nobodyさん2012/07/14(土) 22:22:54.25ID:???
すまん。過疎ってたとこ勢いづいたのに便乗して質問させて。

ネストのフォームでアソシエート先の値を編集できるようにするとき
アソシエートの器を用意するために

@parent.build_children

とすると仮にアソシエート先の値をブランクにしたままsaveしても
アソシエート先にレコードが出来ちゃうじゃん?

これって入力フィールドがemptyだったら
アソシエート先のレコードはdeleteするみたいな条件で毎回廃棄処理を入れなきゃダメなの?

空白だったらアソシエート先にはレコードをわざわざ作らないって出来ないの?

説明下手でスマソ
0122nobodyさん2012/07/14(土) 22:24:48.85ID:???
>>120
generate と destroy は対になってるから
view も controller も helper もなんでも同じ構文で消せるよ
0123nobodyさん2012/07/14(土) 22:33:12.81ID:???
>>122
ありがとん
0124nobodyさん2012/07/15(日) 00:59:17.49ID:???
>>122
例えば他のアプリから
@viewとcontrollerのファイル自体をコピペで持ってきて使うのはOK?

要するにrails generateは使わないってこと?
それとも
A必ずrails generateしてコードの中身だけをコピペすべき?

@だけでも問題なくアプリは動くけど
testやfixtureなどの整合性はどうなんだろうと思って。

あまり気にせず、controllerやmodelやviewsはいちいちgenerareせずに新規ファイルだけ突っ込んでいってok?

0125nobodyさん2012/07/15(日) 04:28:44.60ID:???
>>124
rails generate と同じことやるんなら、別にコピーでも構わない
0126nobodyさん2012/07/15(日) 06:07:46.57ID:???
あっちこっちでエラー出て面倒になるから
極力generate で作って destroyで消したほうがいいぞ
0127nobodyさん2012/07/15(日) 06:57:52.50ID:???
>>125
>>126

どっち!?
01281262012/07/15(日) 07:05:45.49ID:???
>>125の方法でもいい
あるべきところに、適切なテキストが置いてあれば
それだけでRailsはちゃんと動くからgenerateで作らなくても大丈夫だけど
そのあるべきところに適切なテキストを配置するのに結構手間がかかる

この手間をしている間にミスをする可能性が出てしまうから
極力generateで作ったほうがいい

そのためにgenerateコマンドとdestroyコマンドがあるといっていい
言い換えると作ってる人が楽をするためにgenerateとdestroyがある
0129nobodyさん2012/07/15(日) 10:28:51.44ID:???
>>127
どこに何をおけばどのように動くかきちんと把握できてるなら、generate を使う必要は
必ずしもあるわけではない

逆に、把握できてないなら、素直に generate 使っとけ
0130nobodyさん2012/07/15(日) 11:02:10.06ID:???
把握出来てても普通は generate 使うよなあ
0131nobodyさん2012/07/15(日) 11:33:10.42ID:???
>>121
:reject_if
0132nobodyさん2012/07/15(日) 15:47:27.62ID:???
>>131
ありがとう
0133nobodyさん2012/07/15(日) 15:51:05.43ID:???
追記で質問

rails g controller action method1 method2 method3

ってしたらviewも対になってmethod1〜3まで出来るよね

controller内のmethod1〜3までの記述は異なるけど
renderはすべてmethod1.html.erb
を呼び出すようにした場合

method2.html.erb
method3.html.erb
は手動で消してもいいの?
0134nobodyさん2012/07/15(日) 15:59:47.90ID:???
もんだいない
0135nobodyさん2012/07/15(日) 17:12:19.38ID:???
>>134
ありがとうございます
0136nobodyさん2012/07/15(日) 21:45:55.32ID:???
Railsを使ってBlogを15分で作る
http://salvan.web.fc2.com/programming/ruby/ruby.blog15m.html
0137nobodyさん2012/07/16(月) 09:40:23.12ID:???
>>109
1億ドルという途方もない額が今週GitHubに投資された。
http://jp.techcrunch.com/archives/20120714what-exactly-is-github-anyway/
0138nobodyさん2012/07/16(月) 09:47:18.70ID:???
github の mass assignment 脆弱性が突かれた件 - blog.sorah.jp
http://blog.sorah.jp/2012/03/05/mass-assignment-vulnerability-in-github
0139nobodyさん2012/07/16(月) 22:27:55.29ID:???
C#/VBプログラム内で外部のRubyスクリプト・ファイルを実行するには? − @IT  
http://www.atmarkit.co.jp/fdotnet/dotnettips/1069appusingruby/appusingruby.html
0140nobodyさん2012/07/18(水) 03:22:17.81ID:???
http://perldancer.org/
#!/usr/bin/env perl
use Dancer;

get '/' => sub {
"Hello World!"
};

dance;



$ perl bin/app.pl &
...
$ curl http://localhost:3000/
Hello world!
0141nobodyさん2012/07/18(水) 03:38:29.22ID:???
RubygemsLeader
http://rubygems-leader.herokuapp.com/
0142nobodyさん2012/07/18(水) 12:08:06.70ID:???
controllerとかにコメント残しまくってるんだが
行が増える分だけ動作が遅くなるとかあり得るんか?
0143nobodyさん2012/07/18(水) 12:13:11.04ID:???
ないない
字句解析の時点でコメントスキップされるから誤差もいいところ
0144nobodyさん2012/07/18(水) 12:32:49.99ID:???
>>143
ifなどの条件判断からの処理を複数行で書くのと
一行で端的に極力省略化された書き方するのとでは違ってくる?
0145nobodyさん2012/07/18(水) 12:38:36.68ID:???
そんなのも誤差でしょ
コンパイル時に結合順序の違いが考慮される程度で最終的な構文木なり内部コードなりは一緒じゃないの?
Rubyの実装は知らんけどわざわざ違いを出す理由も思いつかない
0146nobodyさん2012/07/18(水) 20:31:58.90ID:9zcTnPvu
疑問に思って考えて質問して回答貰う時間でお釣りが来そう。
0147nobodyさん2012/07/18(水) 21:48:48.00ID:???
得意げに1行で書きまくる人居るよね
見にくいだけなのに
0148nobodyさん2012/07/18(水) 22:08:52.48ID:???
昔のperlだとスコープが生成されないぶん後置ifの方が速かったって記憶が。
今はどうかしらんが。
0149nobodyさん2012/07/18(水) 22:27:34.20ID:???
ブロック作るよりは後置が速いと思うよ
ベンチもかなり回さないと分からんけど
0150nobodyさん2012/07/19(木) 02:12:58.27ID:???
> ベンチもかなり回さないと分からんけど
それを「誤差の範囲」というのでは…
0151nobodyさん2012/07/19(木) 03:06:40.35ID:???
ちょっと質問させてください。
例えばSNSでいうメッセージ的なものでもGETにして

URL example.com/messages/46747

Routes 'messages/:id' => 'messages#show', :as => 'show_messages'

ViewLink <%= link_to 'message', show_messages_path>


とするのが王道ですか?

これだとURLにメッセージのIDが丸見えなので不健全な気がしないでもないのですが。。。。
0152nobodyさん2012/07/19(木) 05:02:53.18ID:???
mixi
facebook
google+
twitter
0153nobodyさん2012/07/19(木) 05:16:14.90ID:???
色々なWebアプリケーションフレームワークのパフォーマンスを比較 | TreeFrog Framework
http://b.hatena.ne.jp/entry/www.treefrogframework.org/ja/ドキュメント/パフォーマンス比較%23.UAbIZa4NDMg.hatena
0154nobodyさん2012/07/19(木) 05:28:09.34ID:???
>>151
普通は

ハッシュキー持たせるかな

before_createで
1.MD5あたりで時間をキーにハッシュ生成
/message/:hash_key
で表示
0155nobodyさん2012/07/19(木) 05:52:31.53ID:???

「2chのトリップとID:xxxxxx」で説明するとmd5ハッシュとsaltの話がピンと来る気がした
http://www.otsune.com/diary/2007/10/24/1.html#200710241
281京4749億7671万0656個のランダム値を全て計算してつきあわせなければならない
0156nobodyさん2012/07/19(木) 13:18:59.65ID:???
>>154
ありがとん

メッセージ新規作成のときに

URL messages/new/:username

で送信相手のユーザー名を入れて
メッセージ編集画面を開くのも同様にすべき?
このやり方も不健全?
0157nobodyさん2012/07/19(木) 13:22:06.49ID:???
Ruby On Rails Security Guide
http://guides.rubyonrails.org/security.html


0158nobodyさん2012/07/19(木) 15:59:02.27ID:???
素朴な質問いいですか?

viewの中で

カラムを表示させるときのことです
(特に入れ子のテーブルの)

表示させようとするカラムのレコードがしょっちゅうNilってことが、あるとします。

その場合、viewに毎回いちいち
if (カラムのテーブル名.カラム名)?
をお尻につけてあげなきゃダメですか?

それとも、もっとスマートな方法はありますか?
0159nobodyさん2012/07/19(木) 16:52:49.05ID:???
> 表示させようとするカラムのレコードがしょっちゅうNilってことが、あるとします。

設計ミス、はい次。
0160nobodyさん2012/07/19(木) 17:32:13.02ID:???
>>159
なぜかというと余計なレコードは増やしたくない。

必要な時だけbuildしてネスト先のレコードを作るようにしているからです。

そのネスト先のレコードを使わないと分かっていても
has_oneなどのアソシエーションをくんでいた場合は
空でもいいから必ずレコードは作っておく必要があるのでしょうか?
0161nobodyさん2012/07/19(木) 18:45:44.50ID:???
>>158
try使え
0162nobodyさん2012/07/19(木) 19:16:25.91ID:???
>>161
こんなのあったのね
ありがとう
0163nobodyさん2012/07/19(木) 20:25:35.57ID:???
>>156
URLだけ気にしたところでフォームのHTMLに同様な情報が含まれるだろうから意味がない
0164nobodyさん2012/07/19(木) 20:31:20.17ID:???
>>163
少しでもスパムメッセージとか防げるよね?
0165nobodyさん2012/07/19(木) 20:47:39.18ID:???
>>164
スパムやる人間ならHTML解釈ぐらい楽勝でやってるさ
URLを気にするのはムダな努力
0166nobodyさん2012/07/19(木) 21:19:28.86ID:???
> if (カラムのテーブル名.カラム名)?

これNoMethodError出るよねw
0167nobodyさん2012/07/20(金) 06:14:23.06ID:???
コマンド叩くたびにくっそ待たされるの何とかしろよ
どこがアジャイル開発だ
0168nobodyさん2012/07/20(金) 08:34:02.28ID:???
>>167
Rubyのバージョンとプラットフォームは?
0169nobodyさん2012/07/20(金) 12:08:54.42ID:???
railsの難易度ってどれくらい?
素人ヘッポコ・プログラマーでも出来る?

HTMLとCSSくらいなら分かる
0170nobodyさん2012/07/20(金) 12:09:25.65ID:???
やめとけ
0171nobodyさん2012/07/20(金) 13:18:29.99ID:???

PostgreSQL Rising
http://wekeroad.com/2012/07/19/postgresql-rising

MySQL is done. It's the Postgres Age. by Jeff Dickey
http://dickey.xxx/mysql-is-done-it-s-the-postgres-age

「MySQLが技術的なギャップを縮めてきているものの、PostgreSQLは優秀で人気がある」
http://www.computerworld.jp/topics/601/

MySQLにはDDLトランザクション処理がないので、
http://www.infoq.com/jp/news/2009/05/heroku-provisionless-revolution

MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.4.2 ロールバックできないステートメント
http://dev.mysql.com/doc/refman/5.1/ja/cannot-roll-back.html
0172nobodyさん2012/07/20(金) 14:10:58.50ID:???
>>158
hobo_support の _? を使うときれいにいくぞ:
カラムのテーブル名.カラム名.なんとか if カラムのテーブル名.カラム名
の代わりに
カラムのテーブル名.カラム名._?.なんとか

hobo_support 全体を require すると起動が遅くなるので、必要な定義だけコピペしてもよろしい
0173nobodyさん2012/07/20(金) 18:39:17.31ID:???
Railsで、簡単に静的コンテンツのみを別サーバから配信する方法 
http://d.hatena.ne.jp/rx7/20081124/p1
0174nobodyさん2012/07/21(土) 02:50:05.00ID:???
routes設定?について質問させてください。

match 'posts/disable/' => 'posts#disable', :via => :post, :as => :disable_post

としていてindexのビューのテーブルにて
削除したい該当レコードにチェックをつけて、
下記で対象を絞り、複数のPostレコードのフラグを一括で書き換え無効(0)にしていたとします。

Post.find_all_by_id(params[:checked].keys) 以下、フラグ変更処理


ここまではうまくいっています。


しかし、posts/show.html.erb
の中に
フラグ書き換えのための下記リンクを
張ると何故か posts/disable.4
に飛ばされてしまいます。
本当は posts/disable/4 に飛ばしてフラグを変えたいのですが何故でしょうか

<%= link_to 'disable', disable_post_path(@post) %>

0175nobodyさん2012/07/21(土) 07:25:29.58ID:???
match 'posts/disable/:id' => 'posts#disable', :via => :post, :as => :disable_post
0176nobodyさん2012/07/21(土) 09:05:23.73ID:???
>>175
ありがとうございます
それも試しましたが
そう書くと

indexからチェックをつけてdisableアクションに飛ぶと
なぜか
routing error no route matches [post] "posts/disable/"
になります

showから単独でのdisableをしようと飛ぶと
routing error no route matches [get] "posts/disable/15"
になります

もうこれだけで3日間止まっちゃってます。。。。
0177nobodyさん2012/07/21(土) 13:10:54.88ID:???
:as => :disable_post
じゃなくて
:as => 'disable_post'
じゃね
0178nobodyさん2012/07/21(土) 13:19:06.06ID:???
>>177
そこは関係ないよ
0179nobodyさん2012/07/21(土) 14:00:34.40ID:???
match 'posts/disable(/:id)' => 'posts#disable', as: :disable_post, via: :post

ちなみに詳細から飛ばす時、GETで飛ばしてるなら当然エラーになる。

あとPUTだと思うぞ。
0180nobodyさん2012/07/21(土) 20:02:00.33ID:???
>>179
ありがとう 書かれた通りに直しました。
しかし、いまだに
No route matches [PUT] "/posts/disable/11"
と出ちゃうけど何故でしょうか。。。。

indexのほうは問題ありませんでしたが、
showで posts/disable/11 に飛んで上のエラーが出ます

ちなみにこのように記述しています

routes
match 'posts/disable(/:id)' => 'posts#disable', :via => :post , :as => :disable_posts


view
<%= link_to 'Disable', disable_posts_path(@posts), :method => 'put' %>

controller
def disable
post = Post.find_all_by_id(params[:checked].keys)

...残りの処理...

end
0181nobodyさん2012/07/21(土) 23:29:59.96ID:???
:via に :put と書かないと
0182nobodyさん2012/07/21(土) 23:41:06.96ID:???
>>181
コントローラも下記のように書き換えました

controller
def disable
post = Post.find_all_by_id(params[:id])

...残りの処理...

end

そして routes も

match 'posts/disable(/:id)' => 'posts#disable', :via => :put , :as => :disable_posts
として、複数レコードにチェックつけてsubmitしても
なぜか1レコードしか処理されていないみたいです。

@showから、表示しているレコードのIDだけを、link_toを使って単独で渡して処理する
Aindexから、チェックをつけてる複数のレコードのIDを、submitで渡して処理する

この両者に対応させる処理を1つのアクションに集約するって可能なんでしょうか?
0183nobodyさん2012/07/22(日) 01:54:37.91ID:???
一覧のviewのform_forのとこが間違ってる
■ このスレッドは過去ログ倉庫に格納されています