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

【RoR】Ruby on Rails Part16

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2013/01/31(木) 08:07:31.27ID:GGHiBszv
前
http://kohada.2ch.net/test/read.cgi/php/1341589839/
http://unkar.org/r/php/1341589839

■参考サイト
<英語>
本家: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://doc.ruby-lang.org/ja/1.9.3/doc/index.html
0577nobodyさん2013/08/08(木) NY:AN:NY.ANID:x7tUE+P1
MongoDB Plans & Pricing with MongoHQ
http://www.mongohq.com/pricing

Plans and Pricing | MongoLab: MongoDB-as-a-Service
https://mongolab.com/products/pricing/
0578nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
>>576
ならどうして最初からすべてmongodbでやらないの?

mongodbはMySQLに比べて
圧倒的に早いんだよね?

自分の認識では
mongodbってmemcachedの
フラグメントキャッシュみたいに
キーと内容だけを保持するシンプルなもの
なんだけどあってる?
だからこそ使い勝手が悪いから
単純なところのテーブル(DB)だけを
mongodbで実装

あってる?
0579nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
みんなは4.0に移行してるようだけど
そんなにメリットあるかいな?

使えるgemはほとんど未対応だろうし
0580nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
> 使えるgemはほとんど未対応だろうし
ずいぶんとまぁ印象だけで語ってるなぁ
0581nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
>>578
mongodbはスキーマレスな上に、各々が配列やハッシュを持てるからRDBSよりも自由度がはるかに高い
書き込み性能は段違いだが、読み込み速度は大差ないか劣る可能性もある
最大の弱点はトランザクションが効かないことで、テーブル構成が複雑で整合性が必要な箇所には使われない

だから使い分けが必要なの

わかる?
0582nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
>>579
ほとんど対応してますね
0583nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
すみません、質問させてください。

RoRでirbを使用してデバッグしているのですがhelperのメソッドを更新してreload!を実行したのですが、更新がされず毎回exitして再度irbを立ち上げてる状況です。

すでに定義済みのメソッドの中身を書き換えてもreload!では反映されないのでしょうか?
05844462013/08/10(土) NY:AN:NY.ANID:OMYv+fV8
>>456
質問させていただいた件、解決しました。
書込みができなかったのでお礼が遅れてしまいましたが、ありがとうございました。
0585nobodyさん2013/08/12(月) NY:AN:NY.ANID:???
ActiveRecordで


| id. | language |typed│
|001| Ruby   │  0│
|002| Perl   │  0│
|003| Python │  0│
|004| C++   .│  1│
|005| Java  │ 1│


こんな感じの検索結果を受け取ったときに、そこで更にtypedによってレコードを分割したいときは
どうすればいいでしょうか
0586nobodyさん2013/08/13(火) NY:AN:NY.ANID:ZYgjO/1S
result = Language.where(なんか条件)
のようにして >>585 の結果を得ているとする。

A: DBから別々に取ってくる

result はActiveRecord::Relation のインスタンス(まだ配列は返ってきていない)だが、
これはさらに条件を . でつなげることが出来る。この場合、ANDで条件を追加する形になる。

typed = result.where(typed, 1)
typeless = result.where(typed: 0)

2つの変数ともに Relation のまま(= 必要になるまでSQLは実行されない)。
必要なら to_a とか。大抵ぎりぎりまで Relation のままでOKなはず。

B: Rubyレベルで分ける。

こっちだと、SQLを実行してレコード一式読み込んでから、メモリ内で分ける。

B-1: Enumerable#partition を使う

2つに分けるなら partition が使える。

typed, typeless = result.partition{|x| x.typed == 1 }

B-2: Enumerable#group_by を使う

lang_groups = result.group_by {|x| x.typed }
typed = lang_groups[1]
typeless = lang_groups[0]
0587nobodyさん2013/08/13(火) NY:AN:NY.ANID:ZYgjO/1S
>>583

アプリ生成後のREADMEによれば、 reload! でリロードされるのはコントローラと
モデルのコードだけのような。
0588nobodyさん2013/08/13(火) NY:AN:NY.ANID:???
>>586
ありがとうございました
0589nobodyさん2013/08/15(木) NY:AN:NY.ANID:9ap0WrHO
暗号化通信サービスが沈黙
http://blog.f-secure.jp/archives/50708704.html

http://jp.wsj.com/article/SB10001424127887323338404579001681390701184.html
0590nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
assetsのプリコンパイルする意味って何ですか?

そんなに速度が変わりますか?

プリコンパイル実行で毎回5分ほど待たなきゃいけないし
画像一つ追加するのにこれだけ大変だから気になりました

画像一つフォルダにつっこんで
イメージタグを記述のほうが楽ですので。
0591nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
rails4にすればプリコンパイルは早くなるよ(たぶん
0592nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
要らないなら無効にすればいいんじゃないの。
0593nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
ドットインストールの講座を進めているんですが、#37〜#41でハマりました。
下記のエラーがどうしてもわかりません。
ActionController::RoutingError (uninitialized constant CommentsController):

環境はruby:2.0,rails:4.0です。
環境が新しくなったことの弊害だと思うのですが、どなたか教えていただけると有り難いです……
ちなみにrake routesでルーティングはしっかりできているように見えます
0594nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
>>593
ソースはらないと分からん
05955932013/08/16(金) NY:AN:NY.ANID:???
>>594
失礼しました。
下記がソースです、見られるでしょうか。
https://github.com/248/rails_blog

RoutingErrorが出ているものをコミットしてあります。
0596nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
>>595
また教えクンか

ググれ
0597nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
>>595
ggrks
0598nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
>>596
しね
0599nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
>>598
うるさい
0600nobodyさん2013/08/17(土) NY:AN:NY.ANID:???
>>593
コントローラの名前が間違ってる。
coments_controller.rb
↓
comments_controller.rb
06015932013/08/17(土) NY:AN:NY.ANID:???
>>600
指摘の通り名前のミスでした。
自分では見たつもりだったのですが、気づきませんでした。
有難うございます。
0602nobodyさん2013/08/17(土) NY:AN:NY.ANID:???
uninitialized constant CommentsController

って書いてあるんだからもうちょっと注意してたら分かったかもね!頑張って!
0603nobodyさん2013/08/17(土) NY:AN:NY.ANID:LZQA7c0b
ActionController::RoutingError (uninitialized constant CommentsController):

ActionController:: RoutingError(定数CommentsControllerを初期化されていない):

翻訳
http://translate.google.co.jp/
0604nobodyさん2013/08/17(土) NY:AN:NY.ANID:???
http://hayabusa3.2ch.net/test/read.cgi/morningcoffee/1366274651/l50

【芸能】女優の日南響子(19)、車にひかれ一時意識不明に 「フラフラと放心状態、車道に自ら入って行ったようにも見えた」と目撃談★2
http://awabi.2ch.net/test/read.cgi/mnewsplus/1376716736/l50
0605nobodyさん2013/08/19(月) NY:AN:NY.ANID:???
https://twitter.com/makotokuwata/status/369178911852085249
https://blog.twitter.com/2013/new-tweets-per-second-record-and-how
0606nobodyさん2013/08/19(月) NY:AN:NY.ANID:???
なぜTwitterは低遅延のままスケールできたのか 秒間120万つぶやきを処理、Twitterシステムの“今” − @IT
http://www.atmarkit.co.jp/news/201004/19/twitter.html

RORのままアーキテクチャの変更で10000%高速化したとな。
ttp://b.hatena.ne.jp/entry/highscalability.com/scaling-twitter-making-twitter-10000-percent-faster

ミニブログの 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
0607nobodyさん2013/08/19(月) NY:AN:NY.ANID:???
localeについてだけど
viewで適用させる方法は分かるけど

controllerで判断させるにはどうすればいいの?
やっぱりあらかじめ
localeファイルに各文章を格納してて
それをコントローラーで読み込まなきゃダメ?
0608nobodyさん2013/08/19(月) NY:AN:NY.ANID:???
何を判断させたいのか分からない
多言語対応させたいってこと?
0609nobodyさん2013/08/19(月) NY:AN:NY.ANID:/LpY+15W
i18n
0610nobodyさん2013/08/21(水) NY:AN:NY.ANID:???
assetsのpreconpileって
javascriptのコードを他人にパクられるのを防ぐ抑止力になる?
0611nobodyさん2013/08/21(水) NY:AN:NY.ANID:???
多少難読化はされるからなるといえばなるかもしれないけど
関係ない部分含めて丸パクされたら結局パクられるからならないともいえるかもしれない
0612nobodyさん2013/08/21(水) NY:AN:NY.ANID:???
>>611
関係ない部分も含めて丸パクってどういう意味?

javascriptをパクられなくするのって無理だよね
0613nobodyさん2013/08/21(水) NY:AN:NY.ANID:???
>>612
precompileするとコード全部ひとまとめにされるじゃん?
それ丸ごとコピペすればパクることができるじゃん?
って言うアホみたいな意味しかないです

あくまで抑止力って話でしょう
0614nobodyさん2013/08/21(水) NY:AN:NY.ANID:???
javascriptをパクられないようにするのは無理だから
パクられてもいいようなものしか書かない
あとは工夫してサーバーサイドと組み合わせて何とかする
0615nobodyさん2013/08/21(水) NY:AN:NY.ANID:???
>>613
>>614

ありがとうございます


たとえば、とあるサイトのhtmlソースを取得して
その中からクレイピングするのを

javascriptで実施したら
とあるサイトに残るアクセスログのIPはクライアントPCのIP

サーバーサイドで実施したら
とあるサイトに残るアクセスログのIPはサーバーPCのIP

という認識であってますでしょうか?
0616nobodyさん2013/08/23(金) NY:AN:NY.ANID:cyaglvKC
<%=text_area_tag('hage', "<%= @hoge%>", :rows=>20, :style=>"resize:none;") %>

これがコンパイル通りません
どうしてでしょうか
0617nobodyさん2013/08/24(土) NY:AN:NY.ANID:???
>>616
<%= %> の中は Ruby のコードを書く
"<%= @hoge %>" は Erb のコード
@hoge.to_s に直せ
0618nobodyさん2013/08/24(土) NY:AN:NY.ANID:???
>>617
ありがとうございました。
0619nobodyさん2013/08/24(土) NY:AN:NY.ANID:???
事情があってGETとPOSTを同じアクションにせざる得ないんですが
いったんPOSTしたあと、ブロウザを更新してしまうと、
またPOSTさせてしまうことになります。

POSTさせたあとは、ヘッダーを書きかえるとかはRailsでは可能なんでしょうか
0620nobodyさん2013/08/24(土) NY:AN:NY.ANID:c/4DiZCS
POST後はリダイレクト入れるんじゃないの?
0621nobodyさん2013/08/24(土) NY:AN:NY.ANID:???
>>620
リダイレクトさせたら、結果を渡す方法がないんです。
flashに入れる値がありません
0622nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
初歩的かもしれませんが質問させてください

たとえばRecordモデルの中に
integerのカラム「time」があったとします

timeにはマラソンの結果タイムが秒単位で格納されます

一時間の場合→3600 (1時間)

そのときに
3600→ 01:00:00
1815→ 00:30:15
のように変換して表示させたいです。

そこでapplication_helperに変換用の関数を作りました。
しかし、1ページ内で1000レコードを表示するとしたら、
ページのロード時に関数の呼び出しが毎回1000回行われ計算されます。
これは現実的ではないですよね?

それとも、このくらいの計算ならhelperでも問題ないですか?

�@helperで関数呼び出し表示
�Aレコードが作成される時点で表示用stringカラムを準備しておいて保存→表示時はこれを表示

どちらの設計手法が一般的か教えていただければ幸いです。
0623nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
>>622
1. だな
それぐらいの変換、大したコストじゃない
0624nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
>>623

ありがとうございます

処理負荷コストで考えるべきは
mysqlなどデータベース関連のクエリくらいですか?

だからcountとかはカウンターキャッシュで処理?

rubyの演算だけで処理できる部分はhelperでOK!くらいの考えでいいですか?
0625nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
>>623
ただ1000レコード表示(helperの関数を1000回呼び出し)されるわけですが

仮にこのページを1000人が同時に開こうとする場合

1000人×1000回計算→100万回の計算が行われますよね

これでも�@のhelperに頼るやり方が正攻法ですか?
0626nobodyさん2013/08/25(日) NY:AN:NY.ANID:+qyGnGoh
悩むのは速度が実際に問題になってからでいいよ。

Premature optimization is the root of all evil. --D. E. Knuth
0627nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
>>626
慣例としてはどうでしょうか
0628nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
パフォーマンスチューニングの点から言うと、優先順位はかなり低いでしょう。
データの完全性という点でも、安易に表示用カラムを追加することは
お勧めできません。

大きなお世話でしょうが、私ならまずは1ページに1000レコードを
表示する設計の方をどうにかします。
0629nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
>>628
あなたなりのパフォーマンスで気遣う設計の点ランキング5
を教えて下さい
0630nobodyさん2013/08/26(月) NY:AN:NY.ANID:???
>>625
そんなこと心配するぐらいなら、100万回DBにアクセスされる方を心配しろよ
0631nobodyさん2013/08/26(月) NY:AN:NY.ANID:???
一秒は1000ms

シーク時間はシーク範囲によって異なりますが、仮に 5ms とした場合、並列でI/Oを出せない IDE では 200 IOPS が限界となります。
http://pc.casey.jp/archives/153904156

http://e-words.jp/w/IOPS.html  

Amazonクラウド、2テラバイトのSSD、60GBメモリ搭載で12万IOPSを実現するインスタンスを発表 − Publickey
http://www.publickey1.jp/blog/12/amazon2ssd60gb12iops.html
0632nobodyさん2013/08/26(月) NY:AN:NY.ANID:???
622さんと似てますが、データの検索用カラムを追加するのは不自然なのでしょうか。
Book.joins(:author).where("authors.name = ?", name).order(:created_at)
上記のようなのを高速化したくてBookにauthors_nameというカラムを追加したのですが。
0633nobodyさん2013/08/26(月) NY:AN:NY.ANID:ETC/yj1b
で、何パーセント高速化したん?
0634nobodyさん2013/08/27(火) NY:AN:NY.ANID:???
3回平均で73%です。
カラムを追加した方はindexを利用出来てます。
0635nobodyさん2013/08/27(火) NY:AN:NY.ANID:rt0S8jbJ
ハードディスクのIOPSは100から200程度だが、SSDは数千から数万IOPSと大きな差がある。
http://itpro.nikkeibp.co.jp/article/COLUMN/20110606/361088/
0636nobodyさん2013/08/28(水) NY:AN:NY.ANID:???
>>632
データ量次第だけど、あまりそこで正規化崩したくないなぁ。
本-著者の関連テーブルにインデックス張ればなんとかなったのでは感も。
0637nobodyさん2013/08/28(水) NY:AN:NY.ANID:???
あと、MySQLみたいにあまりjoinが強くないRDBMSなら
Author.where(name : name).books
みたいに二回クエリ投げる方が早かったりするかも。
0638nobodyさん2013/08/28(水) NY:AN:NY.ANID:72lLJVGO
<% if value %>
<div class="hoge">Hoge</div>
<% end %>


これを一行で書く方法はないのでしょうか。

<%="<div class='hoge'>Hoge</div>" if value %>
としたらエラーが出ました。
0639nobodyさん2013/08/28(水) NY:AN:NY.ANID:Me59r7Ml
パーシャルにするくらいかねぇ
<%= render partial 'hogediv' if value %>
0640nobodyさん2013/08/28(水) NY:AN:NY.ANID:Me59r7Ml
すぐ気付くと思うけど partial: デス。
0641nobodyさん2013/08/28(水) NY:AN:NY.ANID:???
<% if value %><div class="hoge">Hoge</div><% end %>

ほれ一行
0642nobodyさん2013/08/28(水) NY:AN:NY.ANID:???
>>639-641
ありがとうございました
無理なんですね
0643nobodyさん2013/08/28(水) NY:AN:NY.ANID:???
>>636
ありがとうございます。
mysql だと複数のテーブルから検索したり並べ替えすると
explain で using temporary, using filesort が出ちゃうんですよね。
検索すると正規化を崩すしかないと書かれていた・・・
よくある問題だと思うのでどう対処されてるのか知りたかったんです。
0644nobodyさん2013/08/28(水) NY:AN:NY.ANID:???
>>642
value を定義したら >>638 のままで動いたよ。rails4。
ただ html_safe しないとエスケープされた。
<% value = true %>
<%="<div class='hoge'>Hoge</div>".html_safe if value %>
0645nobodyさん2013/08/29(木) NY:AN:NY.ANID:z/QhLx6C
http://dotinstall.com/lessons/basic_rails/6505

本当に異次元に低レベルの質問で恐縮なのですが、
ここで使われているファイルを一覧できるツールというのは、
例えばどういったものがオススメなのでしょうか?

というか、私は、このツールに辿り着いていません。
深夜・週末起業家というのもあって気持ち悪い程低レベルかもしれませんが、宜しくお願い致します。
0646nobodyさん2013/08/29(木) NY:AN:NY.ANID:z/QhLx6C
すみません。
自己解決しました。
失礼いたしました。
0647nobodyさん2013/08/29(木) NY:AN:NY.ANID:z/QhLx6C
すみません。
解決してませんでした。
すみません。
0648nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
Windowsならエクスプローラーでもなんでもいいと思うけど・・・
ボクはWindowsでもLinuxでもemacsのdiredで確認してます。

もう少しコンピュータ全般の事を学んでからじゃないと
railsに限らずサイトを作るのは難しいかもしれません。
0649nobodyさん2013/08/29(木) NY:AN:NY.ANID:z/QhLx6C
ありがとうございます。
仰る通りですね。先にアイディアが浮かんだので手当り次第にプログラム関係本を読んではいますが、教養的に幅広く習得するにはかなりかかりますね。
実の所、今日、webrickを開けたばかりです。

dired含め調べてみます。ありがとうございました。
0650nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
emacs使ってないならdiredは調べなくても良いと思いますよ!
小規模ならrailsよりsinatraの方がシンプルで良いかもしれません。
0651nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
>>643
>>637みたいに著者で絞り混んで、著者の本を取ってくるっていう二回クエリ投げるのはどうよ。
これはjoinする訳じゃないからMySQLでも十分早いはずだよ。

DB⇔rails間がネットワーク的に細かったり遠かったりという事情がない限りこれで問題ないかと。
0652nobodyさん2013/08/29(木) NY:AN:NY.ANID:ZEP+9UcV
High Performance Rails (long edition) // Speaker Deck
speakerdeck.com/mirakui/high-performance-rails-long-edition
0653nobodyさん2013/08/29(木) NY:AN:NY.ANID:ZEP+9UcV
Rails Hub情報局: 素人がWebサービスを作ってみて分かった9つのこと
el.jibun.atmarkit.co.jp/rails/2011/09/web9-1e8b.html

スタートアップ企業で8年間Webの開発をしてみての反省点いろいろ - Masatomo Nakano Blog
独自フレームワークはやめよう
6. サーバ周りの人材をしっかり確保しよう
b.hatena.ne.jp/entry/blog.madoro.org/mn/84

Ruby on Rails が簡単というのはウソ - #生存戦略 、それは - subtech
subtech.g.hatena.ne.jp/secondlife/20120309/1331279496
0654nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
@users = User.joins(:profile).order('profiles.prefecture DESC')

みたいなことをしてUser群を抽出しても

レンダーするときに再び
User1レコードごとにsqlクエリを吐き出してるっぽいです。

これはどうしてですか?
お陰で体感ロード時間が遅いです。

ロード時間をマシにするなら
joinsの代わりにincludesとかを使うんでしょうか?
0655nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
そうだよ。includesを使う。N+1問題という。
joinsは上の例で言うとprofileのカラムから検索"だけ"したい時に使う。
includesでも検索出来るけど、rails4からはreferencesを指定しないと警告される。
0656nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
>>655
ありがとうございます

例えば世界中のサッカーリーグで考えると

Country (それぞれの国)
Team (プロリーグのチーム)
User (プロサッカープレイヤー)
Profile (プレイヤーの詳細プロフィール)
Mvp (国を代表するトップ選手)
の5つのモデルがあるとします

Countryは複数のTeamを持っています。
同様に国ごとで
複数のMVP(プレイヤー)を持っているとします。

Teamには複数のUserが所属していて、
Userはそれぞら1つのProfileをもっていたとしたとき

国単位で見たときにこれら全てをincludesするなら

@coubtry = Country.find(params[:id]).includes(teams: [users: [:profiles]], mvps: [users: [:profiles]] )

のようにすればいいのでしょうか?
0657nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
has_one だから profile になると思います。
includes(:teams => {:users => :profile}, :mvps => {:users => :profile})
0658nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
あとincludesはそこに書くとエラーになるから
Country.includes(hogehoge).find(1) となりますね。
0659nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
>>657
>>658
ありがとうございました

非常に参考になります
試してみたところ
なぜか変更以前よりロード時間が長くなりました

sqlの数は明らかに減ってるんですが。。。。

こういうこともあるんですね。
0660nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
>>651
それだと問題なくindexも使えますね。
ベンチマークでは、最初に作者を検索するのことを除外すれば
カラムを追加したのと同程度の結果になりました。

ただ、元になる作者が複数、たとえば
Author.where(sex: "man") これらの本が欲しいとなると・・・
0661nobodyさん2013/08/30(金) NY:AN:NY.ANID:???
includes使いながら、JOIN先のカラムで検索する方法ってなかったっけ
あんま知られてないけどあった気がするが…思い出せん
0662nobodyさん2013/08/30(金) NY:AN:NY.ANID:???
>>644
Rails3.2でも動作確認しました
ありがとうございました
0663nobodyさん2013/08/31(土) NY:AN:NY.ANID:pHhaBgx0
winscpを選びました。
先輩諸氏に感謝しております。
今後もお世話になるかと思いますが宜しくお願い致します。
0664nobodyさん2013/09/01(日) 21:16:06.01ID:???
ECサイトを構築しているのですが、注文内容の入力→確認→完了というプロセスを経る際に
完了でsaveメソッドを呼び出す前に確認の時点でバリデーションを行い、エラーメッセージを出力したいのですがどうしたらいいでしょうか
new→valid?メソッドでバリデーションの成否自体を行うことはできるのですが、エラーメッセージの出力がわかりません
0665nobodyさん2013/09/01(日) 21:25:12.30ID:???
すいません自己解決しました
下のリンクを読めば簡単でしたね
ttp://yoshitetsu.rackbox.net/active_record_validations.html
0666nobodyさん2013/09/02(月) 07:55:13.98ID:???
Rails4ってどう?
0667nobodyさん2013/09/02(月) 10:56:10.90ID:???
turbolinks外すと3とそんなに変わんない気がする
キャッシュ関係がよく分からない
0668nobodyさん2013/09/03(火) 03:13:00.11ID:???
strong parameterは重要だと思う
記法やモデルのメソッドが追加されたり小さな変更はそこそこあるけど、確かに大きな変更点はあまりない印象だね
というよりRails自体が成熟してきてるのが原因だと思うが
0669nobodyさん2013/09/03(火) 07:33:17.72ID:???
Railsとcakephpだと
cakephpのほうが体感的に早くない?
0670nobodyさん2013/09/03(火) 08:33:07.31ID:???
ActiveSupport::Queueってどうなったんでしょうか。
masterブランチにもないし、今後も取り込まれそうにない?
0671nobodyさん2013/09/03(火) 08:56:33.25ID:???
ベンチマークでは、RailsとCakeはそんなに変わらなかった気がする
ちなみにCakeはPHPフレームワークの中では最遅の部類
0672nobodyさん2013/09/03(火) 10:52:00.37ID:GPnijyFs
>>669

>>96
0673nobodyさん2013/09/03(火) 21:39:32.25ID:LahgdGM9
他人が作ったRailsアプリを保守する側に回っていて、約束事が多すぎて正直よく分からないのですが・・・
Rails3.2では、assets/javascripts以下に配置された.jsは基本的に全て読みこまれるんですよね?


とりあえず、Rails側からデータをassets/javscripts/***.jsに渡したいのですが、
その場合、HogeControllerが、hoge.html.erbに書いた<%= @hoge.json %>にまずJSON形式でグローバルスコープで書きだしてから、
assets/javscripts/***.jsからその書きだしたJSONを参照するしかないのでしょうか?


この方式を採用したら、ユーザーが現在見ているHTMLのソースに
{"name": "Hoge", "age": Hage } とかデータがそのままべた書きされてしまうのでできれば避けたいのですが・・・


他に何かいい方法はありますか?
0674nobodyさん2013/09/03(火) 22:13:36.80ID:08+4VxZe
>>670

今後どうなるかは分からんけど、 rails-queue という gem に切り出されているのを
3.2 で使っている。

>>673

JSONを吐くリソースURLを用意して、JSからそこにリクエストすればいいのでは?
0675nobodyさん2013/09/03(火) 23:23:49.53ID:???
>>674
それもいいかもしれませんが、
実はHogeControler#indexの中で既にそのレコードは呼び出していて、そこからhoge.erb.htmlだったり、.jsだったりが描画されるんです。

それだったら、.jsからまた改めてそのレコードを呼びだすAPIを叩いてレコードをまた読み込むよりは、
HogeControler#indexが終わって、Viewをレンダリングするときに、そのレコードをViewに渡したほうがよくないでしょうか・・・・


もちろんそう重いクエリではないので、二度クエリを実行してもそこまでパフォーマンスは低下しませんが・・・
0676nobodyさん2013/09/04(水) 00:06:31.28ID:???
>>675

Viewに渡して処理していいなら、それでいいと思うよ。
最初に>>675がjsに渡したいって書いたから>>674のような答えになるわけで。
■ このスレッドは過去ログ倉庫に格納されています