トップページ⇒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
0455nobodyさん2014/06/18(水) 23:41:33.82ID:???
>>454
IN使ってるのが問題ってだけだろうね
0456nobodyさん2014/06/18(水) 23:44:54.90ID:???
>>455
どういう書き方すればいいの?
0457nobodyさん2014/06/18(水) 23:51:31.49ID:???
>>456
arelでexistsかjoinで書けば良いんじゃない
0458nobodyさん2014/06/19(木) 02:07:11.41ID:iQHtmoMn
殺伐としすぎでワロタwやっぱ専門板はこうでないとな
雑談系板に立つプログラミングスレとはえらい違いだよ



wwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0459nobodyさん2014/06/19(木) 09:42:42.87ID:???
チューニングの余地はいっぱいあるし、この程度の件数で遅いのは確実になおせる
0460nobodyさん2014/06/19(木) 10:10:23.05ID:???
>>459
ちょっと気になったんだけどどこにチューニングの余地あんの?
Twitter社もこの方法では1000ms以内に結果返すの無理だからって理由で断念して違う手法とったんだが
0461nobodyさん2014/06/19(木) 10:12:46.71ID:???
>>460
何桁違うと思ってるんだよ
0462nobodyさん2014/06/19(木) 10:24:29.06ID:???
>>461
どう考えてもこれは桁の問題じゃないだろ
10万件程度のデータでもメモリに載り切らなくなるのはわかりきってるしTwitterみたいに大きくないから大丈夫なんて言える問題じゃない
0463nobodyさん2014/06/19(木) 10:26:31.68ID:???
メモリに乗るかどうかで判断してるのはDB触ったことないんだろうな
0464nobodyさん2014/06/19(木) 10:29:14.49ID:???
とにかく、データが増えて遅くなったと言ってるやつのほとんどは
SQLでIN使ってる
0465nobodyさん2014/06/19(木) 10:39:29.92ID:???
>>463
横からで悪いんだが今回のケースではどうしても巨大なデータをソートすることになるよね?
>メモリに乗るかどうかで判断してるのはDB触ったことないんだろうな
の意味がわからないから是非教えて欲しいんだけど
0466nobodyさん2014/06/19(木) 10:47:48.37ID:???
おまえら
SQLスレで解決したのになにをやっている

6桁解決だぞ
0467nobodyさん2014/06/19(木) 10:59:10.34ID:???
>>466
じゃあその解決したレスのURLぐらい晒せやボケが。
0468nobodyさん2014/06/19(木) 11:53:09.08ID:???
彼は解決したって書いてるけどjoinを使うことでサブクエリが先に消化されてソート対象がメモリ上に乗るサイズになっただけで結局もっと数が増えたらメモリに乗らなくなってまた遅くなるよ
だからこの問題に関しては>>462が正解
0469nobodyさん2014/06/19(木) 12:02:54.22ID:???
>>468
SQLの勉強からやり直した方が良いよ

>結局もっと数が増えたら
これが桁の問題だろ。>>462は間違い
0470nobodyさん2014/06/19(木) 12:10:39.42ID:???
突然出て来てるソートって何ぞ?
0471nobodyさん2014/06/19(木) 12:10:54.46ID:???
間違ってる間違ってるとは喚くけれど何が間違ってるのかも指摘せず
使ったことがない、勉強しなおせと一方的なレッテル貼り
でも正しい答えは書けない

面白いなあ
0472nobodyさん2014/06/19(木) 12:11:56.28ID:???
>>470
お前みたいな素人が来る場所じゃないからSQLの勉強からやり直した方が良いよ
0473nobodyさん2014/06/19(木) 12:16:14.72ID:???
>>472
何ぞ?
0474nobodyさん2014/06/19(木) 12:19:42.81ID:???
>>469
その会話はTwitterみたいな”ケタ違い”じゃなくても普通のサイトの規模でも簡単に起こるレベルの問題かどうか 
が論点なわけだろ?>>462が言ってるのであってんじゃんお前の読解力がないだけじゃないの

ID出るようにしろよ面倒くさい
0475nobodyさん2014/06/19(木) 12:37:46.53ID:???
10万件でデータサイズどれくらいになると思ってるんですかね。
まさか OR/M に乗っかったときの話なんてしてないよね?
0476nobodyさん2014/06/19(木) 12:43:39.91ID:???
>>474
根本の論点、遅くなってる理由がソートでなくてINだよ
0477nobodyさん2014/06/19(木) 12:47:57.82ID:???
転載
>ご指摘どおり joinへの置換えを行った所
>10000ms→4000ms→0.04msまで落ちました
0478nobodyさん2014/06/19(木) 13:50:43.06ID:???
0.04msってどんなスパコンだよ
0479nobodyさん2014/06/19(木) 14:05:21.42ID:???
計測不能w
0480nobodyさん2014/06/19(木) 14:28:05.92ID:???
mysqlの単位ってsecだよな
40msか
妥当なところ
0481nobodyさん2014/06/19(木) 17:13:20.21ID:???
なにこのスレ。IDでないからってどんだけ自演してんだよ。
0482nobodyさん2014/06/19(木) 17:14:31.41ID:???
railsの酷さとrailsユーザの酷さが一目瞭然なスレだと聞いて飛んできました。
0483nobodyさん2014/06/19(木) 18:18:58.48ID:???
これが煽りおしえて君だ
0484nobodyさん2014/06/19(木) 19:33:58.60ID:???
>>463=>>466
誤魔化そうと必死
0485nobodyさん2014/06/19(木) 19:55:05.90ID:???
>>480
対象テーブルが50万件で40msか。妥当かちょっと遅いか。
まぁいいんじゃないって感じがするね。
0486nobodyさん2014/06/19(木) 20:41:42.67ID:???
一人だけ状況がわかってない奴がいるっぽいな
0487nobodyさん2014/06/19(木) 22:08:57.26ID:???
>>482
Railsがひどいんではなく、それを使いこなそうとしないで文句言ってる奴がひどいだけ
今回の件も自分の希望の回答が得られなかったから騒ぎ立てるいつもの煽り教えて君でした
というだけの話
0488nobodyさん2014/06/19(木) 22:26:15.09ID:???
RailsスレでSQLのチューニングの話をすると
誰もついてこれなくて発狂するっていうのは定説だろ。

過去にも同じことがあっただろ。
0489nobodyさん2014/06/19(木) 22:35:44.39ID:???
>>488
バッカだなぁ

SQLスレでこういう回答が得られました
これを実現するにはRailsでどうすればいいですか?

と素直に聞けばまともな回答がとっくに得られてたはずなのに、
「SQLスレでこういう回答があった。はじめからこういうSQLを発行しないRailsはクソ!」
なんて自分のコードが悪いという可能性を1ミリも考えない態度だから荒らし教えて君なんだよ
0490nobodyさん2014/06/19(木) 23:41:11.32ID:???
>>489
大丈夫??

>>462から一人で書き込んでるよね?
0491nobodyさん2014/06/20(金) 04:17:45.22ID:???
PHPスレにちょいちょいRuby派の人がくるんだけど、このスレも大概ひどいね
0492nobodyさん2014/06/20(金) 09:21:10.54ID:???
>>484 は正しい指摘した奴を否定してるのは
間違ってわめいてたからか
0493nobodyさん2014/06/20(金) 09:42:49.59ID:???
>>489の何がひどいって、質問者に責任を擦り付けてるところ
妄想でな
0494nobodyさん2014/06/20(金) 09:47:48.90ID:???
ちなみに質問したの自分なんですが、件数を100万件に増やしたら遅くなってしまったので結局その部分をAjaxで知恵っm読込することでごまかしました
0495nobodyさん2014/06/20(金) 09:56:54.16ID:???
>>494
mysqlのバージョンって5.6ではないよね?
0496nobodyさん2014/06/20(金) 09:58:50.73ID:???
>>495
mysql Ver 14.14 Distrib 5.1.73, for debian-linux-gnu (x86_64) using readline 6.1
0497nobodyさん2014/06/20(金) 11:09:49.37ID:???
>>496
ありがとう
0498nobodyさん2014/06/21(土) 00:27:39.08ID:0sjmaigu
bookmark とfavorite
どちらが国際的なサイトに有利だと思う?
0499nobodyさん2014/06/21(土) 00:31:06.09ID:???
「国際的なサイト」ってなんだよ
0500nobodyさん2014/06/21(土) 00:33:50.02ID:0sjmaigu
>>499
twitterとかfacebookとか多言語展開するサイトだよ
0501nobodyさん2014/06/21(土) 00:36:58.46ID:???
「多言語展開」ってなんだよ
もうちょっとスレに沿った形で咀嚼してくれよ
0502nobodyさん2014/06/21(土) 00:40:13.53ID:0sjmaigu
その規模作ったことなさげな君の意見はいらんよ
小人はスレ違いとかほざいとけ。たかがRoRごときでいつまで住み着いてんだよw手段にすぎないのに
この質問は簡単に見えて英語はもちろん幅広な教養が必要だから、お前みたいに糞みたいな聞き返ししてる時点で対象外
頭悪いから手段の所しか見させられてない雑魚が、無駄な質問してんじゃねえよ
0503nobodyさん2014/06/21(土) 00:40:57.33ID:???
これが煽り教えて君か
0504nobodyさん2014/06/21(土) 00:45:01.14ID:0sjmaigu
>>503
お前みたいなゴミから教わることなんかねえよw
お前は雇われ、俺は雇う方
頭の違い、格の違い、わかるかな?

英語すらまともにできないクズ野郎が、こういう話題に乗ってきちゃあかんよ
何にも付加価値ないからw
誰か我こそはレベル高いって奴がいたら意見書いといて。
参考にしてやるかもしれないから。
ドメ仕事ばっかりやってる>>503みたいなゴミ野郎の意見はいらねえからw
お前等もそんな時間の無駄するより、簡単なRoR極めるために全時間使っとけよw
0505nobodyさん2014/06/21(土) 00:47:44.23ID:???
> 誰か我こそはレベル高いって奴がいたら意見書いといて。
> 参考にしてやるかもしれないから。
これだけ暴言吐いておいて質問に答えてくれることを期待してるとしたら、
おめでたいにも程がある
0506nobodyさん2014/06/21(土) 00:54:07.65ID:0sjmaigu
>>505
期待なんかしてねえよはなから
ここは英語もまともにできないドメ野郎が多いからな
簡単なRoRに定住してる時点でたかがしれてんだよ

元から自分で調査中で、念のためここでも意見募ったが、
案の定お前みたいな安月給のクズが、何の価値もないセリフ吐くだけだったわw
期待通りだなw
またそのうち覗いてやるから、まともな頭の奴が存在してたら意見かいとけよ
採点してやるから
0507nobodyさん2014/06/21(土) 00:54:59.03ID:???
期待してない割にはレスがすぐ返ってくるなww
0508nobodyさん2014/06/21(土) 01:01:17.44ID:???
>>462から始まったレベルの低い話を改善する救世主は現れんのか
0509nobodyさん2014/06/21(土) 04:05:07.18ID:???
>>500
多言語展開って、たとえば英語についてはその二つで考えてるんでしょ?
タイ語だと何にしようと思ってるの?
0510nobodyさん2014/06/21(土) 04:09:19.78ID:???
>>504
> 元から自分で調査中で
↑って↓ってこと?
> 英語すらまともにできないクズ野郎
0511nobodyさん2014/06/21(土) 08:11:59.00ID:???
久しぶりに有名半コテが登場してるな
0512nobodyさん2014/06/21(土) 12:08:39.96ID:???
>>508
その件を質問したのは自分です、荒れてしまってすいません……

流れをかえる……それならみなさんが普段使ってるgemなど教えて頂けませんか?
ominiauthとかdeviceとか超有名なものは分かるのですが
意外と知られてない(かも)けれどこれ便利だよーみたいな

自分は
BetterError
https://github.com/charliesome/better_errors

Railsのエラー画面がすごく見やすくなるのでデバッグがしやすくなります
0513nobodyさん2014/06/21(土) 12:22:09.30ID:???
>>512
pry かわいいよ pry

今更だけど、元質問に関しては hmt を使えばいいんじゃないかなーと思う
0514nobodyさん2014/06/21(土) 13:58:17.02ID:???
自分は
devise
cancan
mailboxer
rails autocomplete
acts as taggable
acts as votable
recaptch
simple captcha
paperclip
bullet
bootstrap
jquery

ここらへんは絶対に使う
0515nobodyさん2014/06/22(日) 11:21:11.60ID:???
流れを変えるためにあえて質問しますが、なんでいまさらRubyなんか使わなきゃいけいんですか?
Ruby厨の凝り固まった意見が聞きたいです
0516nobodyさん2014/06/22(日) 11:24:24.18ID:???
俺はPerl派なんだが、会社の凝り固まった方針でRuby使わされてる。全くつまらない日々だな。
gem、とか単に「ジェム」って言いたいだけだろ。
どう考えてもcpanmのほうがスマート。
0517nobodyさん2014/06/22(日) 11:24:54.54ID:???
>>515
じゃあ何使えばいいんでしょうか?
あなたの思う最強の言語とやらを教えて下さい
0518nobodyさん2014/06/22(日) 11:25:24.31ID:???
node.jsに1票
0519nobodyさん2014/06/22(日) 11:26:59.00ID:???
(救世主現る)
0520nobodyさん2014/06/22(日) 11:30:00.00ID:???
>>515-519
一人で何やってんの?
0521nobodyさん2014/06/22(日) 12:09:57.20ID:???
さぁようやく2chっぽい流れになってきました
0522nobodyさん2014/06/22(日) 12:53:13.08ID:???
流れをぶった切ってごめん

�@5秒に1回ajaxでリロードかけて内容を表示更新してる部分がある

�Aコメントを投稿したら5秒待たずとも同じように表示更新がかかる

�Aのように投稿があったときには
投稿後に「投稿しました」とflashメッセージを更新部分に表示させて3秒でフェードアウトするようにしている。


�Aの投稿後、問題なくflashメッセージは表示され3秒後には消えるんだが
その直後の�@の定期更新がかかると再びflashメッセージが表示されて困ってる

この場合はどう制御したらいいの?
0523nobodyさん2014/06/22(日) 12:59:10.80ID:???
自動更新のajax読み込んでるところで
flashにnilいれればいいだけじゃない?
0524nobodyさん2014/06/22(日) 13:02:32.56ID:???
ソースさらしてもらわんとなんとも
0525nobodyさん2014/06/22(日) 13:52:29.71ID:???
すみません。コード必要ですね。

投稿後の表示更新はこんなかんじです

【Controller】
(コメントsaveのコード)
format.js do
 flash[:notice] = "投稿しました。"
 render 'sections/reload_after_post’
end

【View】
<div id="comment">
 <%= render 'sections/comment' %>
</div>

【reload_after_post.js.erb】
$('#comment').html("<%= j(render(:partial => 'sections/comment')) %>");

【sections/_comment.html.erb】
<% flash.each do |name, msg| %>
 <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 %>
(コメント表示のコード)
0526nobodyさん2014/06/22(日) 13:58:56.77ID:???
そんなことより、FamilyMartの「おとなのお味噌汁」の「あさりは」はマジで上手いぞ、おすすめ。cpanmとか言ってる場合じゃない
0527nobodyさん2014/06/22(日) 14:00:51.51ID:???
>>525の動きが「投稿後のflashメッセージ表示」で、この下のコードが5秒おきの表示更新になります。
【Controller】
def reload_part
 @comments = @section.comment_threads.order("updated_at DESC").page(params[:page]).per(10)
 @comment = @section.comment_threads.build
 respond_to do |format|
  format.js
 end
end

【View】
reloadPart();
function reloadPart() {
 $.ajax({
  url: “sections/reload_part?page=<%= params[:page] %>",
  type: "GET",
  dataType: "script",
 });
}

<% flash.each do |name, msg| %>
 <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 %>
(コメント表示のコード)

【reload_part.js.erb】
$('#comment').html("<%= j(render(:partial => ‘sections/comment')) %>");
setTimeout(reloadPart,5000);
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
■ このスレッドは過去ログ倉庫に格納されています