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

【RoR】Ruby on Rails Part18

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2014/01/11(土) 20:04:00.68ID:???
前
http://kohada.2ch.net/test/read.cgi/php/1382097427/
http://unkar.org/r/php/1382097427/

■参考サイト
<英語>
本家: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
0528nobodyさん2014/06/22(日) 14:36:09.95ID:???
>>527
だから

def reload_part
 @comments = @section.comment_threads.order("updated_at DESC").page(params[:page]).per(10)
 @comment = @section.comment_threads.build
flash[:error] = nil
flash[:notice] = nil
 respond_to do |format|
  format.js
 end
end

これでいいでしょ
0529nobodyさん2014/06/22(日) 15:06:45.23ID:???
>>528
解決しました
そんな単純なことで解決するとは・・・
ありがとうございました
0530nobodyさん2014/06/22(日) 15:25:21.50ID:???
>>528
と思ったら解決していませんでした
どうやら他のページに遷移したら
flash[:notice] = nil しているにも関わらず
空の状態でflashメッセージが表示されます(枠だけ)
0531nobodyさん2014/06/22(日) 16:48:08.55ID:???
>>526
「あさりは」とはなんぞや
0532nobodyさん2014/06/22(日) 18:41:24.73ID:???
>>530
<% flash.each do |name, msg| %>
 <% next if msg.blank? %>
 <div id="flash_message">
  <div class="alert alert-<%= name == :notice ? "success" : name.to_s %>">
   <%= content_tag :div, msg.html_safe, :id => "flash_#{name}" if msg.is_a?(String) %>
  </div>
 </div>
<% end %>

こんな感じで空だったら省けばええやん、対症療法的だけどソースコード追って根本的解決する元気が無いなら
これでごまかしとけばいいよ
0533nobodyさん2014/06/22(日) 20:09:06.06ID:???
前、受託開発でのmysql2の利用を悩んでたものだけど
mysqlスレにいい答えが載ってたよ
https://mariadb.com/kb/en/mariadb-client-library-for-c/

みんな、こういうのをいれてGPLとかにしなくて良いようにしてるんだね〜
驚いたよ
0534nobodyさん2014/06/22(日) 20:27:13.78ID:???
>>498-506
なにこいつwwwwwww
キモ過ぎてめっちゃワロタ
0535nobodyさん2014/06/22(日) 20:31:11.27ID:???
>>534
いちいちあげんなやカス。
0536nobodyさん2014/06/22(日) 20:32:53.23ID:???
RoR代表の>>506とか、まさにRoRのレベルを表してるな。
やっぱnode.jsが一番。
05375062014/06/23(月) 00:42:04.33ID:vkNI5Agn
レベルひくっw
土日遊びに行く金もないのかな?
bookmarkとfavoriteの件は定まったからもういいよ。君らの脳みそじゃ総合的な判断は難しいようだ。
技術要素であるRoRばっかりやっておきなwほんじゃなゴミども
0538nobodyさん2014/06/23(月) 02:18:53.51ID:???
(´∀`∩)↑age↑
0539nobodyさん2014/06/25(水) 04:32:32.03ID:VfeeFhnY
東京Node学園 - connpass
http://nodejs.connpass.com/
0540nobodyさん2014/06/25(水) 11:30:52.63ID:???
======== ここから ========
このスレはnode.jsスレになりました。
RoRの話題禁止です。
0541nobodyさん2014/06/25(水) 11:34:36.39ID:???
RubyやPython、Javaも1970年代のやり方が残っており、依然としてブロッキングシステムコールを使っています。それらの言語は文法だけが飾り立てられています。
http://www.publickey1.jp/blog/11/nodejs_node.html
0542nobodyさん2014/06/25(水) 13:49:07.16ID:???
>>537こそ1970年代の化石
0543nobodyさん2014/06/25(水) 23:02:42.03ID:???
つまり、Ruby≒Fortranということだな
0544nobodyさん2014/06/26(木) 00:42:45.95ID:???
とりあえずやっつけ仕事はRailsがベストだろ
0545nobodyさん2014/06/26(木) 01:43:45.13ID:???
Sinatraだろ。
0546nobodyさん2014/06/27(金) 00:27:44.31ID:Kfr04yi9
Ruby on Railsで作られた有名サイトの紹介 | PbTimes 情報誌
http://pb-times.jp/P_529d87c5b28d6
0547nobodyさん2014/06/27(金) 03:23:01.66ID:Kfr04yi9
Ruby - Railsが時代に合わなくなってきた - Qiita
http://b.hatena.ne.jp/entry/qiita.com/kaiinui@github/items/2781219340d427543d08
0548nobodyさん2014/06/27(金) 16:09:12.42ID:???
ページのレンダリング速度を測るのってどうすればいい?
before_filterの中で
@time =Time.now
してfooterでTime.nowとの差分とってみたんだけど値がマイナスになったりで数値が取れません
0549nobodyさん2014/06/28(土) 00:11:41.16ID:???
>>548
var start = Date.now();
// ...
// rendering...
// ...
var end = Date.now();
console.log("Elapsed: " + (end -start));

これでいいだろ。
そりゃ逆にひき算したらマイナスになるんでないかね。
0550nobodyさん2014/06/28(土) 00:31:50.47ID:???
>>548
Timeでusec使えば良いよ
他はDateもTimeも秒単位になってしまう

Railsが遅い象徴で秒を測らないとって意味なら自虐ねたとしてOK
0551nobodyさん2014/06/28(土) 03:51:09.36ID:???
レンダリングってどの部分のことを言ってるのやら
Railsのレンダリングならログ見りゃ一発なんだけど
0552nobodyさん2014/06/28(土) 09:27:19.49ID:???
マネーロンダリングの場合、ログに出てますかね?
0553nobodyさん2014/06/28(土) 09:41:37.73ID:???
>>549
それは上にも書いた通り試したのですがそれをやるとなぜか値がマイナスになったりプラスになったりします


>>550
やってみます

>>551
ログに出力される値をページ上に出力したいです
0554nobodyさん2014/06/28(土) 11:04:47.12ID:P+7Bvf6W
https://github.com/MiniProfiler/rack-mini-profiler
画面の左上に小さく、画面の処理時間を表示

http://qiita.com/natsu871/items/7034e945e4e1f3737d1c
0555nobodyさん2014/06/28(土) 14:16:20.62ID:???
画面と言われるとディスプレイ全体をイメージしてしまうな。
0556nobodyさん2014/06/29(日) 08:29:00.45ID:FLtC2iyW
https://twitter.com/ayumin/status/482689025619533824

herokuオフィス訪問 - satomicchyのつぶやき
ttp://satomicchy.hatenablog.com/entry/2014/06/29/042701
0557nobodyさん2014/06/29(日) 15:37:32.35ID:???
@communities = current_user.get_up_voted(Community)
@numbers = Number.includes(:user).where(:community_id => @communities.collect(&:id)).order("users.active_time_at DESC").page(params[:page]).per(10)

これだとロードし終えるまでに60秒ほどかかる
どうして?
current_userが所属しているコミュニティを取得して、そのIDを代入するのは時間はかかっていない。
取得した「Numberレコードの所有者」の「active_time_at(関連するUserテーブルの項目)」で並び替えようとすると
異常に時間がかかっている模様。

@communities = current_user.get_up_voted(Community)
@numbers = Number.includes(:user).where(:community_id => @communities.collect(&:id)).order("created_at DESC").page(params[:page]).per(10)
だと2秒もかからないのに

何かいい方法ってありますか?
0558nobodyさん2014/06/29(日) 15:39:44.67ID:???
ちなみにテーブルとアソシエーションは以下のとおりです

User: has_many Communities, has_many Numbers
Community: belongs_to User, has_many Numbers
Number: belongs_to User, belongs_to Community
0559nobodyさん2014/06/29(日) 15:55:42.15ID:???
>>557
過去ログ読め
データ数ぐらい書け
DBのバージョンぐらい書け
0560nobodyさん2014/06/29(日) 16:03:58.70ID:???
とりあえず hmt 試そう
0561nobodyさん2014/06/29(日) 16:05:05.56ID:???
>>559
申し訳ない

User: 20,000レコード
Community:100レコード
Number:10,000レコード
ってんかんじで

DBはMySQL5.1.69です
0562nobodyさん2014/06/29(日) 16:21:27.81ID:???
>>561
inを使ってるのが問題だから
>>560が言うとおり、hmtを試してくれ

もう一つは、MySQL5.1.69じゃ遅いよ
0563nobodyさん2014/06/29(日) 16:32:16.95ID:???
>>562
hmtを試すとは?

それとMySQLのバージョン違いでそんなに遅いもんなんですか?
Rails3.2.11を利用しています
0564nobodyさん2014/06/29(日) 16:42:22.31ID:???
>>563
とは?じゃねーだろ
知らないならまずぐぐれ
0565nobodyさん2014/06/29(日) 16:50:28.46ID:???
>>564
hmtだけでググりましたが
それだけだと抽象的な検索結果しか出てこなくて
何をどうhmtと紐づければいいか分かりません
0566nobodyさん2014/06/29(日) 16:52:52.42ID:???
>>565
rails hmt でぐぐれ
0567nobodyさん2014/06/29(日) 17:13:52.73ID:???
>>566
ありがとう。
rails hmtでググっても今回の件に該当するようなページが出てきませんでした。
rails hmt inも試しましたが同様・・・
0568nobodyさん2014/06/29(日) 17:15:44.15ID:???
>>567
rails hmt でぐぐったんなら hmt とはなんぞや?が分かっただろう
だったら hmt を試すことはできるはずだ

分かってないのに言ってるなら今すぐ死ね
0569nobodyさん2014/06/29(日) 17:18:02.95ID:FLtC2iyW
Railsライブラリ紹介: N+1問題を検出する「bullet」 TECHSCORE BLOG
http://www.techscore.com/blog/2012/12/25/rails%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E7%B4...
0570nobodyさん2014/06/29(日) 17:18:39.11ID:FLtC2iyW
http://www.techscore.com/blog/2012/12/25/railsライブラリ紹介-n1問題を検出する「bullet」/
0571nobodyさん2014/06/29(日) 17:37:23.16ID:???
Javascriptを使うのをやめろ:Railsの時代遅れ云々についての結論 - Qiita
http://qiita.com/kaiinui@github/items/dad6180f1910c6a4bfd5

Ruby - Railsが時代に合わなくなってきた - Qiita
http://qiita.com/kaiinui@github/items/2781219340d427543d08
0572nobodyさん2014/06/29(日) 17:54:43.82ID:???
調べて分からないやつは死ね
Railsに触れるな
0573nobodyさん2014/06/29(日) 19:22:12.06ID:???
hmtなんて誰も使わないような単語だしてドヤ顔とかほんとにレベル低いな
rails has_many throughでググるといいよ
0574nobodyさん2014/06/29(日) 20:38:51.70ID:???
>>573
場違いな回答おつ!
0575nobodyさん2014/06/29(日) 21:29:38.05ID:???
>>568,572
なんでRailsにはこう言う変なのが多いのかね?
N+1問題とか、Rails使わなきゃ絶対遭遇しないだろ。糞ライブラリで馬鹿みたいに隠蔽してっからんなザマになんだよ。

ということでRails終了。
0576nobodyさん2014/06/29(日) 21:31:02.84ID:???
>>575
N+1問題はORM使ってたらどこにでも発生しうる問題
ActiveRecordに限った話でもなんでもない

ということで>>575はバカ
0577nobodyさん2014/06/29(日) 21:33:21.79ID:???
>>566
r: ライオンが
a: あくびをしたら
i: いい感じ
l: LDKが
s: サバンナ状態

h: ハッハッハと笑いが止まらん
m: またこいつだよ例の奴だよ
t: とっとと消えろ
0578nobodyさん2014/06/29(日) 21:33:59.47ID:???
特にRailsが、ひどいという話だが
0579nobodyさん2014/06/29(日) 21:35:50.69ID:???
>>578
Hibernate N+1 でぐぐったらわらわら出てくるんですが
0580nobodyさん2014/06/29(日) 21:52:10.65ID:???
O/Rマッパ使わなきゃいいだけの話では。生SQLでやれ
0581nobodyさん2014/06/29(日) 21:53:16.33ID:???
>>573
ありがとうございます。hmtってhas_many throughの略だったんですね。。。。
ここでいうNumberテーブルは中間テーブルというわけではありません。
用途を具体的に言えば

User(会員)-Number(電話番号)-Community(携帯キャリア)
のようなかんじです

会員Aさん、Bさん、Cさんがいたとして

Aさんは ドコモ、ソフトバンクの携帯を所持。それぞれの番号(Number)が
090-1111-1111、090-2222-2222

Bさんは auとソフトバンクを所持。それぞれの番号(Number)が
090-3333-3333、090-4444-4444

Cさんは ドコモとauとソフトバンクを所持。それぞれの番号(Number)が
090-5555-5555、090-6666-6666、090-7777-7777

のようなかんじなので、どちらかというと
@numbers = @user.numbers(会員が持つ複数の電話番号一覧)だったり @numbers = @community.numbers(携帯キャリアごとの電話番号一覧) のような使い方をして
number(電話番号)をUserのshowページ)や、Communityのshowページで一覧して表示しています。

@communities = current_user.get_up_voted(Community)
ここでは @numbersを取得するので@numbers = @communities.codes.page(params[:page]).per(10)としても
「undefined method 'codes'」というエラーになりますね
0582nobodyさん2014/06/29(日) 21:55:02.72ID:???
>>581
> ありがとうございます。hmtってhas_many throughの略だったんですね。。。。
rails hmt でぐぐればそれぐらい一発で分かる話なんだが、こいつほんとにぐぐったのかね?
0583nobodyさん2014/06/29(日) 22:03:21.92ID:???
あーあ、こんなとこで電話番号晒しちゃって
0584nobodyさん2014/06/29(日) 22:50:31.90ID:???
hmtって出るたびになんでこんなに荒れるん?
0585nobodyさん2014/06/29(日) 22:58:17.10ID:???
>>584
多分概念的に若干難しいから手取り足取り教えて欲しい人にはハードルが高いからだろうね
0586nobodyさん2014/06/29(日) 23:14:55.78ID:???
>>585
DBの人から見るとテンプレに載るほど簡単なレベルみたいだけど?
0587nobodyさん2014/06/29(日) 23:27:29.83ID:???
>>586
SQLは上級者向け言語ですから(キリッ
0588nobodyさん2014/06/29(日) 23:29:56.46ID:???
>>581を見ると一般的なhmtの使い方をしてなさそうだが
0589nobodyさん2014/06/30(月) 01:56:18.43ID:???
>>571
要するにあほだな
0590nobodyさん2014/06/30(月) 07:20:11.22ID:???
すべてはJSONになる

Google Apps Unscripted, March 14, 2014
https://www.youtube.com/watch?v=E1CzPtUKWkw

Apps Script Crash Course - Script Editor
https://www.youtube.com/watch?v=ezbH4IJynhU

Google I/O 2012 - Use What You Know: HTML and JavaScript in Apps Script
https://www.youtube.com/watch?v=tcl24asytos

Your First Script - Apps Script Tutorials
https://www.youtube.com/watch?v=Pgfbl_o9WvM
0591nobodyさん2014/06/30(月) 08:08:53.97ID:???
>>584-588
一人でなにしてんの?
0592nobodyさん2014/06/30(月) 08:46:11.40ID:???
一人だったんだ
0593nobodyさん2014/06/30(月) 08:50:39.79ID:???
運用板で確認したらマジで一人の自演でくっそわろたwwwwwwwwww
0594nobodyさん2014/06/30(月) 09:34:06.17ID:???
>>593
運用版みれるんだすごいな
0595nobodyさん2014/06/30(月) 11:13:18.26ID:???
ニコ生に誰がどの生放送に対してコメントしているのかっていうのは全て保存されていて、誰でも検索出来ますっていう話*ホームページを作る人のネタ帳
http://b.hatena.ne.jp/entry/e0166.blog89.fc2.com/blog-entry-1174.html
0596nobodyさん2014/06/30(月) 12:17:09.64ID:STnXsq+3
この板IDつかないのか
0597nobodyさん2014/06/30(月) 12:46:14.05ID:???
sageなきゃつくよ
0598nobodyさん2014/06/30(月) 22:59:59.83ID:???
application_helper内で
@user = User.find(1)
みたいにActiveRecordを使うのは無理なんかな?
0599nobodyさん2014/06/30(月) 23:02:37.59ID:???
やってみりゃ分かるよ
0600nobodyさん2014/06/30(月) 23:38:51.22ID:???
無理だった
なんで
0601nobodyさん2014/07/01(火) 01:08:38.25ID:nJV1b0sU
php
0602nobodyさん2014/07/01(火) 01:54:38.36ID:???
ぺちぱー
0603nobodyさん2014/07/01(火) 07:23:18.33ID:???
>>600
「無理だった」だけじゃ理由なんてみんな分からんよ
0604nobodyさん2014/07/01(火) 12:57:15.67ID:???
>>600
言葉遣いが悪くて、返答する気持ちが全然おきない。
0605nobodyさん2014/07/01(火) 20:55:47.96ID:XzNxeXAu
>>581
has_namy through を使うと、>>558 は以下のようになるね
(>>558 の Community: belongs_to User は謎)

Users:
 has_many Numbers
 has_many Communities through Numbers
Communities:
 has_many Numbers
 has_many Users through Numbers
Numbers:
 belongs_to Users
 belongs_to Communitys

詳しくは以下のページの「2.4 The has_many :through Association」を参照
・Active Record Associations - Ruby on Rails Guides
 http://guides.rubyonrails.org/association_basics.html
他にも様々な関連(アソシエーション)があるから、目的に合ったものを選ぶこと

で、Numbers の user_id と community_id にインデックスを設定すれば、
>>561 で示されたような(たかだか)数万件のデータ量であれば、
>>557 にあるような60秒の応答時間にはならないハズだけど....
もしも応答時間に変化が無ければ、Rails以外に問題があると思う
0606nobodyさん2014/07/03(木) 01:04:37.84ID:???
JSON
0607nobodyさん2014/07/03(木) 01:09:59.72ID:???
>>605
mysqlの問題だよ
5.6はわからんけど
5.5まではjoinとかサブクエリとかINとか使ったら遅くて使い物にならん
0608nobodyさん2014/07/03(木) 01:22:03.64ID:???
じゃあバージョン上げりゃいいじゃん
0609nobodyさん2014/07/03(木) 21:27:15.30ID:lAObJFwK
>>607
MySQL 5.5 のリリース開始が2011年頃で
しかも has_many through は
すでに Rails 1.0 で実装されていた
そんな3年前のありふれたソフト構成で、
たかが数万件の検索に数十秒を要する性能問題の原因が
MySQL にあるとは考えられない
0610nobodyさん2014/07/03(木) 23:01:26.64ID:???
故にRailsは糞、だろ
0611nobodyさん2014/07/03(木) 23:04:48.64ID:???
はいはい、お薬多めに処方しておきますね
0612nobodyさん2014/07/03(木) 23:33:56.46ID:???
>>609
MySQLの遅いポイントは有名だけどよ。
そんな少ない件数で起きる話ではないよな。
0613nobodyさん2014/07/04(金) 00:51:43.59ID:???
で?結論はなんなのよ
0614nobodyさん2014/07/04(金) 02:49:53.83ID:???
MySQL vs Rails の対決が見れると聞いてやってきました
0615nobodyさん2014/07/04(金) 02:51:48.01ID:???
このスレの殺伐感。たまんないね。
0616nobodyさん2014/07/04(金) 04:52:28.37ID:iiWE9XVi
「新版リリースのたびに他製品を選ぶ理由が薄れる」--PostgreSQL開発者インタビュー(前編) - ZDNet Japan
http://b.hatena.ne.jp/entry/japan.zdnet.com/business-application/sp/35049207/


「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
0617nobodyさん2014/07/04(金) 14:38:22.00ID:???
防蟻対策はどうすればよいのかと
0618nobodyさん2014/07/05(土) 06:16:25.08ID:12HindV2
Boric bait
0619nobodyさん2014/07/05(土) 10:38:39.82ID:???
mysqlよりはpostageのほうが今は人気だよね、でも今まで名だたるサイトがmysql使ってきたのに素人のおもちゃレベルのもので使えないほど遅くなるわけが無いよね
上の例に関しては適切にindex貼ってないだけだからrailsもmysqlも関係ないけどね
0620nobodyさん2014/07/05(土) 10:43:54.42ID:???
mysqlで遅いって言ってるひとの大半は使い方を間違ってる
0621nobodyさん2014/07/05(土) 12:17:16.21ID:???
mysqlって実装されてる機能の範囲では最速ってイメージだな
0622nobodyさん2014/07/05(土) 13:19:44.90ID:???
index貼ってないとか、slow logに出るだろ。ひょっとしてexplainすらしてないのか?
0623nobodyさん2014/07/06(日) 01:31:33.21ID:???
>>617
白蟻対策じゃなくて防蟻対策ということは、蟻側の視点で「どうやって防蟻剤を突破して家を食うのか?」ってこと?
0624nobodyさん2014/07/06(日) 08:27:50.77ID:vvaN7WsG
私は仕事で古い(脆弱と言う人もいる)Webスクリプト言語(Perl)で書かれた多くのレガシーコードによるWebベースのサービスを扱っている。
Mooseのような新しい拡張を使ってはいるものの、この言語は柔軟性に欠けていると感じる。
レガシーコードのサポートを避けることはできないので、当分はサポートを続ける予定にしているが、
新たに開発するものに関しては、もっと現代的でWebアプリケーションに使われている言語を使いたいと思う。
フレームワークごと変えてしまってもいい。
http://developers.slashdot.jp/story/14/07/05/0819214/
0625nobodyさん2014/07/06(日) 09:26:17.63ID:???
MySQLクラスタリングで、32GBのサーバー10台に分散しているシステムが、ioDriveを使うと1台でおさまったりするので、コスト効果もいい。
http://internet.watch.impress.co.jp/docs/special/20120731_549042.html
0626nobodyさん2014/07/06(日) 11:10:11.87ID:???
ミクシィでの事例

変更前
数百台のデータベース
変更後
1/10の数十台に減りました

http://kaworu.jpn.org/kaworu/2013-01-23-1.php
0627nobodyさん2014/07/06(日) 11:44:10.99ID:???
いいぞ、もっと貼れ
■ このスレッドは過去ログ倉庫に格納されています