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

【RoR】Ruby on Rails Part13

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2011/11/04(金) 17:06:24.32ID:???
■前
【Ruby】Ruby on Rails Part12
http://hibari.2ch.net/test/read.cgi/php/1311050686/

■参考サイト
<英語>
本家: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/

http://twitter.com/dhh
http://www.loudthinking.com/
0880nobodyさん2012/02/08(水) 12:12:49.63ID:???
>>878
なんかいろいろ妙だなそれは…。
本番と同じにするという意味でVMにLinuxまでは分かるとして、単にターミナルで繋げばええやん。

TextMateは2.0待った方が良いのでは。
日本語出せても変なので。
0881nobodyさん2012/02/08(水) 12:25:39.46ID:v8bninox
Rails3.2使ってるけど
RUby1.9にしたほうが早くなる?
0882nobodyさん2012/02/08(水) 13:29:20.80ID:???
>>880
878じゃないけど
sambaじゃないとtextMateつかえないからじゃないか?
0883nobodyさん2012/02/08(水) 15:26:37.24ID:???
>>880
878だけど
ターミナルから動かすviよりMacVimの方が色々と楽なので
Linux使ってる理由はご明察
0884nobodyさん2012/02/08(水) 18:45:18.40ID:???
Rails3のテストの説明でおすすめあれば教えてください
0885nobodyさん2012/02/08(水) 21:11:23.84ID:5Y0ckqbl
production環境でサーバを起動して
ブラウザでページを見るとログに

cache: [GET /] miss
cache: [GET /ルート] miss

みたいに出るのですが、これはキャッシュ関係の設定に
何か問題とかがあるのでしょうか?
0886nobodyさん2012/02/08(水) 22:33:39.50ID:???
初歩的な質問ですみません。
rake db:fixtures:load FIXTURES=hoge
でhoge.csvを読み込ませたいのだけれど、No such file or directory - /test/fixtur
es/hoge.yml
ってなります。ファイルは配置してあるんですが、ymlファイルを探してるようで、csvを読んでくれません。
どうしたらcsvを読んでくれますか?
ruby 1.9.3 rails 3.2.1です。
0887nobodyさん2012/02/08(水) 22:38:34.82ID:???
ググったら3.2からcsvは使えないみたい
どうしても使いたかったらデータベースからインポートするのが早いとおもう
0888nobodyさん2012/02/08(水) 22:52:31.30ID:???
>>887
ありがとうございます!
なるほど、それはcsv読んでくれませんね!
お手数かけました。
0889nobodyさん2012/02/09(木) 09:44:07.71ID:???
>>885
何使ってるか知らないけど、画像ファイルが見つかってない。image_tag に空文字列渡したりするとそうなる。
0890nobodyさん2012/02/09(木) 09:51:25.59ID:???
>>884
3だからと言ってそんなに変わらない。
あちこちにまとめ的な記事あるし、基本は「rspec 写経」でググって出てくるのをそのままやる。
0891nobodyさん2012/02/09(木) 11:00:16.66ID:???
Ruby on Railsのパフォーマンス向上に関する10のtips
http://blog.tkmr.org/tatsuya/show/268-ruby-on-rails-10-tips
findメソッドはパワフルだけど基本SELECT * FROMなので場合によっては:selectで必要なカラムだけ読み込む、また:limitや:offsetを活用する

ごくごく基本的な Ruby on Rails のパフォーマンスチューニング
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20071114
:conditions オプションでキーに使われるようなカラムにはインデックスを作成すべし

:selectで取得するカラムを絞ったらパフォーマンスが倍に
http://brass.to/blog/active_record_select_option.html
レコード件数は110万件くらい
カラム数は30程度
インデックスは効いている(explainで確認済み)

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 による単純な検索なので一時テーブルは使われない)

MySQLパフォーマンスチューニングのためのインデックスの基礎知識
http://d.hatena.ne.jp/kiyo560808/20101117/1289952549

これを知っておかないと、MySQLサーバの再起動でDBデータの不整合が発生するかもしれません! - よかろうもん!
http://d.hatena.ne.jp/interu/20100817/1282041840
0892nobodyさん2012/02/09(木) 11:01:32.22ID:???
[Rails] query-reviewerでRailsアプリのボトルネックを見つける
http://d.hatena.ne.jp/tkng/20080811/1218442298

SpecialWarningというプラグイン
http://d.hatena.ne.jp/authorNari/20090205/1233840189

N+1問題などを監視してパフォーマンスを改善するRailsプラグインBullet
http://blog.digital-squad.net/article/149685338.html

複合キー
compositekeys ActiveRecord Composite Primary Keys
http://compositekeys.rubyforge.org/

Martin Fowler's Bliki in Japanese - エンタープライズRails
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?EnterpriseRails

MOONGIFT: ? Railsを見える化「RailRoad」:オープンソースを毎日紹介
http://www.moongift.jp/2007/07/railroad/

Unexpected Run: Rails3.0でモデルのER図を簡単に出力する方法
http://sawada0903.blogspot.com/2010/10/rails30er.html

「has_many :through の関連テーブル名には、relation_ の接頭辞を用いる」
http://d.hatena.ne.jp/hichiriki/20100622#1277195810
0893nobodyさん2012/02/09(木) 11:54:06.77ID:???

英国政府、新ポータルGov.ukをクラウド、アジャイル、Rubyで開発。ソースはGithubで公開 − Publickey
http://www.publickey1.jp/blog/12/govukrubygithub.html

https://github.com/alphagov/

https://www.gov.uk/
0894nobodyさん2012/02/09(木) 13:23:36.79ID:???
アメリカに行ってエンジニアリングを学びたい中学生 - Togetter
http://togetter.com/li/254340
08958842012/02/09(木) 15:46:45.01ID:???
>>890
ありがとうございます
このスレでも何度かrspecって出てきてますね
標準のやつより良いんでしょうか
試してみます
0896nobodyさん2012/02/09(木) 18:41:05.78ID:???
良い。特に理由がなければrspecを使ったほうがいい。
0897nobodyさん2012/02/09(木) 18:53:25.76ID:???
gchartrb - Google Code
http://code.google.com/p/gchartrb/

chart
http://blog.deepak.jois.name/search/label/gchartrb

http://gchartrb.rubyforge.org/
0898nobodyさん2012/02/10(金) 15:50:30.54ID:???
あるテーブルが不要になった場合、どのような操作を行えば良いのでしょうか?
単純にcreateのマイグレーションファイルを削除してrake db:resetとかで良いんでしょうか?
0899nobodyさん2012/02/10(金) 16:47:44.94ID:???
他のテーブルのデータも要らないんであれば、それでいいんじゃない?
0900nobodyさん2012/02/10(金) 21:15:56.80ID:7+rOXV6+
>>898
def self.up
drop_table :hogehoge
end
ってマイグレーションを作る
0901nobodyさん2012/02/10(金) 21:20:36.67ID:tpz3bLVT
>>900

最近だとup/downはインスタンスメソッドになってる。

downで空テーブルを作成して過去のマイグレーションまで戻れるようにするか
IrreversibleMigrationを投げて戻れないようにするといいんじゃないですかね。

0902nobodyさん2012/02/10(金) 23:19:25.62ID:Kq6N05B2
サイトがめちゃくちゃ重いのだけど
どうすれば早くなります?

RubyがCPU100%になってるので、DB周りでは無いと思うのですが
フレームワーク部分を高速化する方法ありませんか?
0903nobodyさん2012/02/10(金) 23:24:37.69ID:???
CPUをいいものに替えたら?
0904nobodyさん2012/02/10(金) 23:26:29.38ID:Kq6N05B2
>>903
確かにそれはそうなんですが
お金が……

サクラの4GBプラン使ってるのでもうしばらくは大丈夫だと思うのですが……
サイトはユーザー数2300人、同時接続が多い時で600人程度のSNSです
0905nobodyさん2012/02/11(土) 01:34:10.27ID:???
実装だなそれは。
もしくはページの内容。
あとテーブルにインデックス張ってないとか。
他にはセッションをDBにしてたりとか。
0906nobodyさん2012/02/11(土) 02:19:50.84ID:???
htmlソースを見たら、
railsで作ってる場合は
assets/jquery.js
って出てきて恥ずかしいったら
ありゃしないw
0907nobodyさん2012/02/11(土) 07:09:52.27ID:???
>>904
CPUってだけじゃどうしようもない
テストで時間がかかってる処理を見つけるとか
書き込みなのか読み込みなのかくらい分からないと対処できないのでは
0908nobodyさん2012/02/11(土) 10:43:35.38ID:???
さいきんの Rails サービスを高速化をしてみた - coリ・ー・ン<2nd life
SQL に適切にインデックス張ってない
キャッシュすべき場所をキャッシュしていない
無駄なデータを引きすぎてる
http://d.hatena.ne.jp/secondlife/20110919/1316438465
0909nobodyさん2012/02/11(土) 10:49:44.48ID:94FnLoOG
>>905
インデックスは貼ってます
セッションはクッキーです
多分ページの内容か実装ですね

>>907
時間がかかるのは書き込み<<<<読み込みです
というのもSNSなので読み込まれる量が書き込まれる量の何十倍にもなるので……


>>908
それは既に読んでみたのですが
あまり具体性が無かったので
データは必要なものだけひっぱってますし、Find_by_sqlも行なっています
変更が緩やかなものはキャッシュしてsweeperかけてます
0910nobodyさん2012/02/11(土) 13:15:56.55ID:???
Ruby on Rails を高速化する
N+1 クエリー問題を解消する
http://www.ibm.com/developerworks/jp/opensource/library/os-railsn1/

現実の世界の Rails、第 3 回: ActiveRecord を最適化する
一般的なパフォーマンスの問題を解決する
http://www.ibm.com/developerworks/jp/web/library/wa-rails3/

eager loadingって何? - おもしろWEBサービス開発日記
http://d.hatena.ne.jp/willnet/20090303/1236093728
0911nobodyさん2012/02/11(土) 13:22:20.40ID:???
N+1問題は、ORMの典型的なパフォーマンス問題
http://dev.ariel-networks.com/articles/workshop/rails-activerecord/

[Rails] query-reviewerでRailsアプリのボトルネックを見つける
http://d.hatena.ne.jp/tkng/20080811/1218442298

SpecialWarningというプラグイン
http://d.hatena.ne.jp/authorNari/20090205/1233840189

N+1問題などを監視してパフォーマンスを改善するRailsプラグインBullet
http://blog.digital-squad.net/article/149685338.html
0912nobodyさん2012/02/11(土) 14:26:30.53ID:???

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 による単純な検索なので一時テーブルは使われない)
0913nobodyさん2012/02/11(土) 20:08:10.98ID:???
既出だったらゴメンなさいなのですが、Java/RubyでのWeb開発の
生産性の違いってどのくらいあるのでしょうか?

お手軽なものを作るなら、コーディング量が少なくて住むRoR、
パフォーマンスや、セキュリティ要件が厳しい場合は、Spring等が
一般的なのでしょうか??#言語によるパフォーマンスはあまり
気にしなくてもよい、とかの記事も見かけます

開発要員の集めやすさ等は考慮外として、それなりのスキルレベルを
持った人だけで作成した場合の生産性についてを知りたいと思っています。
(ある程度、規模が大きい場合は、あまり変わらない?)
0914nobodyさん2012/02/11(土) 20:16:34.45ID:94FnLoOG
>>913
RoRだと個人で超短期間でサイト作ったという話はよく聞くけど
Javaだとそんな話聞かない

生産性の一点で見ればやっぱRoRの方が格段に高いのではないかな
0915nobodyさん2012/02/11(土) 20:26:51.18ID:???
>>914
確かに個人で作ったものだと、Javaはあまり聞かないですよね。
最初の土台作りや、URLとコントローラのMappingを書かなくて良いのは楽だと思います。
#Seaserでも結構楽には書けますけど。

自分にはよく分かっていないのですが、RubyはJavaに比べて柔軟性が高いと思いますが、
これはRoRの生産性の高さにも貢献しているところはあったりするのでしょうか?
#Seaserには真似できないような、便利な書き方が出来るとか
0916nobodyさん2012/02/11(土) 20:31:42.97ID:???
Making Twitter 10000 Percent Faster | High Scalability

Over 350,000 users. The actual numbers are as always, very super super top secret.
600 requests per second.
Average 200-300 connections per second. Spiking to 800 connections per second.
MySQL handled 2,400 requests per second.
180 Rails instances. Uses Mongrel as the "web" server.
1 MySQL Server (one big 8 core box) and 1 slave. Slave is read only for statistics and reporting.

http://highscalability.com/scaling-twitter-making-twitter-10000-percent-faster
0917nobodyさん2012/02/11(土) 21:19:00.88ID:94FnLoOG
>>915
よく言われるのが「どんなプログラミング言語でも個人が1年に書ける行数は変わらない」
つまり、「1行で沢山のことを出来る言語の方が生産性が高い」

という言葉ですが、やる気とかの問題で一つの処理に長文を書かないといけないJava等と比べると
一気にがーっと書ける量とかそういう点でも生産性が変わってきそうですね

やる気のスパンが1時間だとすると
15分小休憩をはさむと前やっていたことを思い出して、ソースコードを読みなおしてーという手間がありますが
Railsのように15分単位で1セクションを書ききれると休憩後にすぐ次に行けて効率がよくなると思います

言語自体の柔軟性とかはJavaのフレームワークは使った事無いのでわかりませんが……
0918nobodyさん2012/02/11(土) 21:36:31.93ID:???
>>917
その気持はよく分かります^^
Javaはとにかく、コーディング量が多くて大変です。
一つのことを実現するのに、数行かかったりすると、気分が滅入ってしまう
こともよくあります。

Javaも将来的に高階関数が入るのでだいぶ楽になるとは思いますが、
現時点では、RubyやScala、Haskellなんかと比べるとやっぱり辛いですね。
#誰が書いても同じ記述になる、と言う点ではJavaは便利なのですが
#1開発者として見ると、この辺はやっぱり辛いな〜と思います
0919nobodyさん2012/02/11(土) 22:23:32.96ID:94FnLoOG
>>918
Railsはコピペでなんとなく動かせるってのも強いですね
コード数が少ないのでどこで何をしているのかが分かりやすく
ちょっといじるだけで色々かわりますし

Javaだと一箇所いじったら変数キャストして例外処理から書きなおしてーみたいな感じだった気がします
あんまり覚えてないのですが

と、色々な理由から生産性は高い気がします
0920nobodyさん2012/02/11(土) 22:27:28.56ID:???
なんか会話っぽい独り言みたいなのが書き込まれてるけど、コピペはRailsのDRYにそもそも反してるだろ
0921nobodyさん2012/02/11(土) 23:26:58.02ID:???
わろた
0922nobodyさん2012/02/12(日) 01:40:49.74ID:???
has_and_belongs_to_manyで多対多の関連を作ったときに、
関連先に特定のIDが含まれているレコードのみを絞り込むにはどうやって書けばいいんでしょうか?
0923nobodyさん2012/02/12(日) 02:34:44.88ID:1sMAjxn+
habtmまだあるんだな…

whereの条件でidを指定する際に 関連テーブル名.xxx_id のような名前を使う。
0924nobodyさん2012/02/12(日) 09:34:59.96ID:???
>>922
hbtmは結構前から非推奨。ここ4年くらい書いてる人を見たことない。
代わりに has_many :through を使う。
0925nobodyさん2012/02/12(日) 09:45:16.96ID:???
>>924
横やりだけど、非奨励の理由があったら教えて
アジャイル本の4版にも載ってたから、ちょうどこれから使おうと思ってたんだけど
0926nobodyさん2012/02/12(日) 10:06:50.73ID:???
別に非推奨という訳ではないんじゃないかな。
ほとんど使われてないだけで。
公式のドキュメントにも「レガシーなテーブルに対応する時や、中間テーブルに直接アクセスしないならどうぞ」とあるし。

確かにどっかでhabtm使うの良くないからやめようぜっていう記事は見たことあるが。
0927nobodyさん2012/02/12(日) 10:17:40.35ID:???
habtm非推奨は2007年くらいから言われてる気がする。
ギリギリな感じで生き残ってきたような…
懐かしき、くまくまーにもそれらしい記事が載ってるし。
0928nobodyさん2012/02/12(日) 11:42:42.77ID:???
おしえてください。

コントローラーを作成する時、対応するモデルがある場合は、
rails gerate controller [モデル複複数形]
と書くと思うのですが、
対応するモデルがない場合は単数形になるのでしょうか?

0929nobodyさん2012/02/12(日) 14:27:09.49ID:1sMAjxn+
お好きにどうぞ。
複数形にしておくと resources で決まるルーティングと合致するってだけだから、
モデルがないなら無関係。

0930nobodyさん2012/02/12(日) 16:44:11.30ID:???
>>914
いつの話だ。
GrailsもPlay Frameworkもある今はそんなことはない。

>>917-918
これもいつの話だ
Groovyやscalaがあるからそれはない。むしろ既存資産を
Rubyライクなスクリプト言語感覚で使える分Railsより早いな。
0931nobodyさん2012/02/12(日) 16:48:46.22ID:???
>>930
Playはいいね
でも国内とかで実績というか大きな例ってある?
0932nobodyさん2012/02/12(日) 17:37:02.40ID:???
Playは最初良さげに見えたから使ってみたらダメだったという話は聞く。
まだ早いんでないかしら。
デモ見ると確かに良さげなのだが。
Grailsも使ってる大きなとこ知らんし。
0933nobodyさん2012/02/12(日) 18:57:34.11ID:???
Railsにインスパイアされたフレームワークはあくまでエッセンスを取り入れてる
に過ぎないんだよな

最近のRailsは基本的な考え方はそのままにかなりのスピードで進化しているし、
他のフレームワークはそのスピードについて来れていない

まぁ、そのスピード感についていけない開発者も文句を言うきらいもあるが
0934nobodyさん2012/02/12(日) 22:37:39.70ID:6rSX5KYj
本当はrailsの話ではないんだろうけどちょっとクイズと思って答えていただければ…

とあるシステムがA社向けとB社向けに卸されている
2つのシステムはRailsで作られていてほぼ同一のもの、viewだけがカスタマイズで大きく異なっている
ソースコードはgitで管理されている

システムにバグが見つかったので片方に修正を複数箇所の修正をかけた
さてこれで修正点をもう片方に反映する最適な方法は?
一番馬鹿な方法はgit logして修正したファイルの一覧を見つけて
全部上書きなんだろうけど
2社じゃなくて5社10社分で同じ状況の時を考えてみてもらえると嬉しいです
0935nobodyさん2012/02/12(日) 22:59:43.14ID:1sMAjxn+
git format-patch / am あたりじゃないの?
0936nobodyさん2012/02/12(日) 23:01:37.29ID:???
A社とB社でブランチきってないわけ?
どういう管理してるんだかわからんがバージョン管理してるのに手動で上書きって・・・・
0937nobodyさん2012/02/13(月) 02:29:34.02ID:???
git rebaseって超便利じゃね? - Seasons.NET
http://d.hatena.ne.jp/Seasons/20090329/1238351273
0938nobodyさん2012/02/13(月) 13:04:18.98ID:???
ミニブログの Twitterのstats(統計)データ。
http://kaworu.jpn.org/kaworu/2008-01-16-2.php
- 350,000を超えるユーザ。
- 秒間600リクエスト
- 平均毎秒200-300コネクション。最大時は秒間800コネクション
- MySQLは秒間2,400リクエストを処理する
- 180のRailsインスタンスがある。MongrelのWebサーバを使っている。
- 1つのMySQLサーバ(1つの大きな 8コアのサーバ)と1つのスレーブ。スレーブは、統計とレポートのための読み込み専用(リードオンリー)。
- 雑用処理をするための30+のプロセス
- 8台のSun X4100s
- Railsでのリクエストの処理時間は200 msec
- データベースにかかる時間の平均は、50-100 msec
- 16GBの memcached
0939nobodyさん2012/02/13(月) 13:10:38.06ID:???
Scaling Twitter ? SlideShare
http://www.slideshare.net/Blaine/scaling-twitter
0940nobodyさん2012/02/13(月) 13:20:27.55ID:???
Twitterのトラブルから見る、DB分割でスケーラブルなRailsサイト構築:TKMR.blog.show
http://blog.tkmr.org/tatsuya/show/311-twitter-db-rails

Magic Multi-Connections: A “facility in Rails to talk to more than one database at a time”
http://drnicwilliams.com/2007/04/12/magic-multi-connections-a-facility-in-rails-to-talk-to-more-than-one-database-at-a-time/

ActsAsReadonlyable
http://revolutiononrails.blogspot.com/2007/04/plugin-release-actsasreadonlyable.html

https://github.com/masarakki/acts_as_multi_connection
https://github.com/tchandy/octopus
https://github.com/kovyrin/db-charmer
https://github.com/mperham/data_fabric
https://www.ruby-toolbox.com/categories/Active_Record_Sharding

0941nobodyさん2012/02/13(月) 13:25:21.95ID:???
octopus
Database Sharding for ActiveRecord
https://github.com/tchandy/octopus

User.where(:name => "Thiago").limit(3).using(:slave_one)

Octopus.using(:slave_two) do
User.create(:name => "Mike")
end
0942nobodyさん2012/02/13(月) 15:23:56.28ID:JBva2IDx
rails初心者ですが質問させてください

ruby1.9.2
rails3.1.3

アップロードされたが画像の表示をリサイズしてからやりたいのですが、
画像をデータベースにbinary型のデータとしてアップロードしているので
public配下のフォルダに保存するpaperclip等は使えません

現状の画像の表示は send_dataで画像のみを表示するshow_photo というアクション作って
色々なページから<%= image_tag photo_show_photo_path(@photo) %> の様な形で埋め込んでいます

ググるとrmagickを使う例が出てきますが、 img = Magick::ImageList.new("test.jpg") の様にファイル名を引数として
指定しているため、どうデータベースのデータを指定すればいいのかが分かりません

またimage_sizeを使う例でも http://blog.matake.jp/archives/rails_image_size.htmlの ファイル名を引数にとっているので、
どの様にデータベースのbinary型のデータを読み込めば良いかわかりません

上の二つを応用したいのですが、どなたかデータベースからデータをとって来て処理する方法を教えていただけないでしょうか?
よろしくお願いします
0943nobodyさん2012/02/13(月) 20:25:35.83ID:+j7LBGVZ
>>942
RMagickの場合
http://studio.imagemagick.org/RMagick/doc/image1.html#from_blob
0944nobodyさん2012/02/13(月) 21:03:10.66ID:???
>>223

ちょっと遅レスだけど、レスありがとう。
結論から言うと、config/initializers はrails g modelの時によみこまれないのか、
うまくいかなかった。

https://github.com/technoweenie/attachment_fu/issues/41

どうも外人もattachment_fu.rb直接いじってるぽい。
いいんか・・・
0945nobodyさん2012/02/13(月) 22:28:24.43ID:r3WlVMK6
すみません、どなたか助けてください

ログインユーザが admin のときだけ管理メニューをナビゲーションにだしたくて、
application.html.erb を以下のようにかいています。

<li><a href="http:">Contact</a></li>
<%= show_admin_menu_if_admin %>
</ul>

ここで、show_admin_menu_if_admin は application_helper.rb で以下のように定義してます。

def show_admin_menu_if_admin
if session[:user_id]
if User.find(session[:user_id]).name == "admin"
'<li><a href="/users">Users</a></li>'
end
end

ところが、これを実行すると以下のように < や = が < や &eq に展開されてしまい、
HTMLとして解釈してもらえません

<li><a href="/users">Users</a></li>

erb のなかからクオートされない HTML を生成するにはどうしたらいいでしょうか。
0946nobodyさん2012/02/13(月) 22:34:06.22ID:+j7LBGVZ
string.html_safe! とか <%= raw ... %> とか。
tagヘルパーも使おうな。


0947nobodyさん2012/02/14(火) 06:05:21.88ID:???
>>942
githubに保存にDBを使えるPaperclipがある。forkされてるから。
本家だけじゃなくて、forkされてるものも探すと良いよ。
0948nobodyさん2012/02/14(火) 06:09:01.08ID:???
raw 書きたくなかったら
<%== >
も使える。
0949nobodyさん2012/02/14(火) 06:12:48.73ID:???
>>945
認証に何使ってるか知らないけど
if current_user.admin?
みたいにしたら良いのに
0950nobodyさん2012/02/14(火) 13:48:09.28ID:vL4j2NEB
>>943
ありがとうございました
無事表示できました!!
0951nobodyさん2012/02/14(火) 23:16:14.43ID:???
945です、皆さなどうもありがとうぎざいました。raw で表示できました
0952nobodyさん2012/02/14(火) 23:18:40.87ID:???
>>949
ご指摘ありがとうございます
user.rb に admin? を追加すればいいでしょうか
0953nobodyさん2012/02/15(水) 13:41:11.96ID:NemRvMc3
ボタンの2度押し防止をしたいと思っています。
button_toに"disable_with"という引数を与えれば、ボタンを押した後にグレーアウトし、押せなくなります。
しかし、押せなくなるのは押したボタンだけで、画面上の他のボタンは押せるのです。
その画面はデータを更新する画面ではなく、データの表示、そしてボタンにより別画面への遷移を行うだけの画面です。
なのでform_forは使えないのです。

どうにか、どれか一個のボタンを押したら、画面上全てのボタンをDisableにすることはできないでしょうか?
ご存知の方がおられましたら、よろしくお願いいたします。
0954nobodyさん2012/02/15(水) 13:44:35.77ID:???
>>953
railsじゃなくてjavascript
0955nobodyさん2012/02/15(水) 14:26:44.14ID:RCBLEB3T
>>953
Railsだけでやりたいなら

form_tag "/" , :remote => true do

ほげほげ

submit_tag "オッケー" , :disable_with => "ロック" , :onClick => "return false;"

これで出来ると思うけど、スマートじゃないしおとなしくJS使うべき
0956nobodyさん2012/02/15(水) 16:24:52.48ID:???
JavaScript - 戻るボタン禁止
http://tk-factory.net/wordpress/?p=400
http://www.javable.jp/blog/129.html
http://jswiki.bugbearr.jp/?%E7%9B%AE%E7%9A%84%E5%88%A5%2F%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%2F%E6%88%BB%E3%82%8B%E3%83%9C%E3%82%BF%E3%83%B3%E7%A6%81%E6%AD%A2
0957nobodyさん2012/02/15(水) 18:23:07.04ID:???
【ウェブアプリケーションという不幸 】

現在、多くのプログラマ(素人)がウェブアプリケーションというものがベストな正しい方向だと勘違いしている。
ソフトウェアの作るにおいてそのアプリケーションに応じた状態遷移を実装するというのは基本中の基本である。
その点においてウエブブラウザというある状態遷移が実装されているアプリケーションの上に
また別のアプリケーションを実装するのは論外である。
そこまでするなら普通にアプリケーションを実装してダウンロードして使ってもらえばいいのである。
ウェブアプリケーションとは虚構にしか他ならない。
ウェブアプリケーションを作ろうとしているあなた。
今すぐ普通のアプリケーションとし設計し始めてはいかがだろう。
そうすればきっと後悔しないですむ。

HTMLやHTTPを悪者にはしていない。
TCP/IPができあがり、その応用として、ファイルを送ったりするようになった。
ファイルの中身のテキストにデータ構造をもたせ、それはつまりツリー構造なわけだが
その実装としてのハイパーテキスト、つまりHTMLという送る側と送られる側で決め事(プロトコル)
をつくり、画像や音楽など表現の幅を広げることは当然の成り行きだっただろう。
そして、その送る側としてのHTMLファイルサーバ、つまりWebサーバ、送られる側としてのプロトコルの解釈・表示系としての
ブラウザというアプリケーション。
ここまではいい。
だが、そこから先が素人の発想というか、いそがばまわれを忘れた者の愚かな発想。
つまりブラウザ上で、アプリケーションを動かすという発想なのである。
ブラウザというのは、おくられてきたステートレスな通信内容の一瞬の表示手段でしかない。
つまりアプリケーションのためのひとつのパーツなのである。
Windowsでいえば、コントロールのひとつ。(実際WebBrowserというコントロールがある。)
JavaならWebClietnだ(これは、ブラウザではないが。)。
包含関係が逆なのである。
ブラウザ上にアプリケーションを作るのは愚かなブームである。
0958nobodyさん2012/02/15(水) 18:27:47.97ID:???
>>957
そうだな、それと同じくしてOS上にアプリケーションを作るのも愚かなブームだ。
0959nobodyさん2012/02/15(水) 18:45:47.81ID:???
何でもかんでもHTTPの上でってのは気持ち悪いなとは思うわ。
0960nobodyさん2012/02/15(水) 23:46:35.01ID:???
HTTPがお手軽で実装事例も多いんだからしょうがない
CORBA/IIOPとか考えたくもないだろ?w
0961nobodyさん2012/02/16(木) 03:21:35.33ID:gUT9ymRS
質問させてください

2ちゃんの様な掲示板を作る時に スレッドのレス一覧の下に書き込みフォームを作るにはどうしたらいいのでしょうか?
scaffoldではnewアクションで空のオブジェクトを作らないといけませんが、
レスするかどうかはわからないのに、レス一覧顔面を見るたびに空のオブジェクトを作るのはもちろんナンセンスですよね?
0962nobodyさん2012/02/16(木) 03:41:59.23ID:???
http://www.tohoho-web.com/html/form.htm
0963nobodyさん2012/02/16(木) 07:15:32.07ID:???
twitterのような大量アクセスサイトでもフレームワークのformクラスは使ってたのかな。
0964nobodyさん2012/02/16(木) 09:05:15.33ID:???
indexではモデルに関連しないform_tagにしといて、new.htmlに飛ばしてそこでモデルと結びつけるとかは?
思いつきだけど
0965nobodyさん2012/02/16(木) 09:07:41.24ID:EHmdvyte
indexページからいきなりpostしてもいいのよ。
0966nobodyさん2012/02/16(木) 10:22:54.95ID:???
別に空のオブジェクト作ってもいいじゃないかと思うけど
0967nobodyさん2012/02/16(木) 11:45:27.27ID:???
twitter等で一覧を出すコスト >>>>>>>>>>>>> 空オブジェクト作るコスト
0968nobodyさん2012/02/16(木) 11:51:31.84ID:gUT9ymRS
色んな方々、アドバイスありがとうございます
確かに普通にhtmlでフォームを作ればできる感じはしますね
あと空のオブジェクトを作る方法でもできる気はします(多分)

でも自分の勉強がメインなので、の空のオブジェクトを作らない かつ ビューヘルパーを使ってやりたいなぁ、と思うので
form_tag等を使う方法で挑戦してみようかと思います
0969nobodyさん2012/02/16(木) 12:40:37.09ID:gUT9ymRS
連投ですみません

結局目的のform_tagを使ってcreateアクションにpostして掲示板のレスを作ることには成功しました
ただ<%= form_tag({:controller => 'posts',:action=> 'create'}) do %> の様に指定したら
routing error(no route)が返って来てしまいました

結果的には強引な感じはしますが、urlヘルパーを使って<%= form_tag(topic_posts_path(@topic),:method => 'post') do %>
の様に指定したらうまく書き込みができました ネストされたルーティングを使っているため上の様になりました

{:controller => 'posts',:action=> 'create'}の様なコントローラとアクションの指定では、なぜうまく行かないのでしょうか?
rake routes するとちゃんと以下のようにはなっています
POST /topics/:topic_id/posts(.:format) {:action=>"create", :controller=>"posts"}
0970nobodyさん2012/02/16(木) 13:29:38.29ID:???
:topic_id => @topic.id を入れてないから。
どこで覚えたか知らないが、もうその書き方古い。Rails 1系の時はそれしか無かったけど。

form_for @post do |f|

でいける。@postをきちんと作ってれば。
0971nobodyさん2012/02/16(木) 13:47:21.30ID:???
>>969
ID付きって事は更新用、scaffoldでいうところのupdateでしょ
create相当のことやるんならIDなしroute

というかscaffoldから始めたら?
0972nobodyさん2012/02/16(木) 14:47:58.94ID:???
scaffold 作って、index と new を合体させればおk
で済む話では?
0973nobodyさん2012/02/16(木) 17:10:38.51ID:xHJ9ppvJ
質問お願いします。
今回Railsで初めてアプリを作っていて、ほぼ完成したので
初めてproduction環境でサーバを起動して動かしてみたのですが、
ログに以下のように表示されます。

cache: [GET /] miss
cache: [GET /assets/application.css] miss, store
cache: [GET /assets/img1.png] stale, invalid, store
cache: [GET /assets/img2.png] stale, valid, store
...

これは、どこかに何か問題があるのでしょうか?
そしてmiss, stale, invalid, store はそれぞれ何を意味をしているのでしょうか?
辞書などでstaleを調べると「新鮮でない」とかですけど、ファイルによって
stale, invalid
stale, valid
だったりして、何が良くて何がダメなのかいまいちわかりません。

Rails3.2.1でアセットをプリコンパイルして
production.rbの設定は以下のようにしています。
config.serve_static_assets = true
config.assets.compress = true
config.assets.compile = true
config.assets.digest = false
0974nobodyさん2012/02/16(木) 18:14:17.54ID:???
production.rb の設定変えてるんだから、自分のやってる事は分かると思うけど。
0975nobodyさん2012/02/16(木) 21:22:21.58ID:???
>>974
デフォルトではエラーがでたので検索で調べたら設定があることを知って
今のところ、弄ってなんとか動く設定にしただけという感じです。
production環境での正常なログとは、本来どんな感じなのでしょうか?
0976nobodyさん2012/02/16(木) 21:56:18.65ID:???
どなたかお助けください

2つのモデル(テーブル)
wokerとphoneがあります(両方scaffoldで作成)

workerモデルには has_one: phone
phoneモデルには belongs_to: woker
accepts_nested_attributes_for : woker

のようにしアソシエーションおよびネストを組んであります。
もちろんphoneモデルにはwoker_idのカラムがあり、telという電話番号(tel)のstringカラムもあります。

そこでview/woker/edit.html.erb
にアソシエートしたphone.tel を表示して、そこからテーブルをまたいでphoneの関連レコードも一緒に更新しようとしています。
その際に下記のようにfields_forを使うと、アソシエート先のカラムの表示(中身のデータも)はきちんとされます。
しかし、更新ボタンを押してもアソシエート先のphone.telへ変更が反映されません。一体なぜでしょうか?

<%= form_for @worker, :url => { :action => "create" } do |worker_form| %>
<%= worker_form.text_field :name %>
<%= fields_for @worker.phone do |phone_form| %>
<%= phone_form.text_field :tel %>
<% end %>
<% end %>
0977nobodyさん2012/02/16(木) 22:21:31.19ID:DriUyt2H

http://vermelho.jugem.jp/?eid=119
0978nobodyさん2012/02/16(木) 22:52:33.55ID:???
>>976
まず設計がそもそも悪い。
なんでworker has_one phoneなの?
一つ以上持ってたら?
普通は workerのカラムに phoneをいくつか持たせると思う。

それは置いといて、問題の件は
nested_attributes_for と fields_for の使い方間違ってる(nested_attributes_for 付けるモデルと、fields_for の引数)。
ちゃんと調べ直した方が良い。
0979nobodyさん2012/02/16(木) 22:59:50.92ID:???
>>978
返信ありがとうございます。
Railsの書籍を3つほど持っているのですが残念ながら、
フォームで関連モデル先のカラム内容までを更新する方法が記載されていません。

試行錯誤しながらネットで調べていたところ、ネストを使えば良いみたいなことが書いてあったので、
お試し的にwork has one phoneという形でテストしているところです。

書籍に載っていなかったことを実現したいので
何をキーワードに調べたら良いものか分からずにいます。

知識不足ですみません。
レス数が950を超えています。1000を超えると書き込みができなくなります。