【RoR】Ruby on Rails Part16
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2013/01/31(木) 08:07:31.27ID:GGHiBszvhttp://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
0455446
2013/06/26(水) 22:07:28.44ID:ubczZcmN---
○コントローラー
helper_method :select_next_page
private
def select_next_page(validation_flg)
redirect_to :action => 'next_test' if validation_flg
end
0456nobodyさん
2013/06/26(水) 22:08:24.95ID:???ビューにそういう仕事をさせない
そういうのはコントローラの仕事
どうもPHP臭い癖が残ってるようだが、PHPと違ってビューはあくまで表示に徹するという意識改革が必要
0457446
2013/06/26(水) 22:17:20.64ID:ubczZcmNありがとうございます!
また考えなおしてみます!
0458nobodyさん
2013/06/29(土) 06:05:07.02ID:4ayE3ytLサーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ハードウェアの多重化なんて必要?
企業で使うとかじゃなく個人的に細々と立てたサーバが攻撃されることなんて滅多にないよね?
攻撃が来るって言ったって大した数じゃないんでしょ?
攻撃されたって大したことは起きないんでしょ?
http://b.hatena.ne.jp/entry/tmaeda.s45.xrea.com/20041101.html
ITmedia エンタープライズ:自社サーバがフィッシングサイトに「踏み台化」されたら? (1/3)
また、電源を切ってしまうことも良い対応ではない。
オンメモリ上で稼働しているフィッシングサイトの場合は、電源を切ることによって、すべてのデータが消えてしまい、原因究明や対応に遅れなどが出ることも考えられるからだ。
事実、フィッシングサイトを構成するツールの中には、後に証拠が残らないよう、すべてがオンメモリ上で動作するものがある。
このような場合、再起動や電源オフによって、メモリ上にあるすべてのプログラムやファイルが消え、事実や原因の確認が困難になる。
http://www.itmedia.co.jp/enterprise/articles/0603/17/news004.html
0459nobodyさん
2013/06/29(土) 12:26:21.94ID:???Rails4.0.0正式版を使っているんですが、
publicフォルダに独自のindex.htmlを置いたのです。
developmentモード時は
http://0.0.0.0:3000/
でindex.htmlが表示できたのですが、
productionモード時は
http://0.0.0.0:3000/
とアクセスしても
The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved.
というエラー表示が出てしまいます。
ログを見ると
ActionController::RoutingError (No route matches [GET] "/"):
となっています。
productionモード時でもindex.htmlを表示できるようにするにはどうしたらいいでしょうか?
0460nobodyさん
2013/06/29(土) 14:18:14.35ID:hP/NWwWJwebサーバに頼らず自力で配信したいなら config/environments/produciton.rb の
# Disable Rails's static asset server (Apache or nginx will already do this).
config.serve_static_assets = false
を変更する。
0461nobodyさん
2013/06/29(土) 17:50:02.42ID:???デプロイ先がHeroku(Webrick)なので、
config.serve_static_assets = true
にして対応しました。おかげ様で表示することができました。
ありがとうございました!
0462nobodyさん
2013/07/06(土) NY:AN:NY.ANID:???Railsでやるんですか?
それともrhtmlを別ソフトで編集するんですか?
0463nobodyさん
2013/07/06(土) NY:AN:NY.ANID:???0464nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???Deginoのようにdb自体をクラウドに置くのは嫌なんです
TuigwaaかDrupal+cck+viewsなら出来そうなんですが、
エンドユーザーがmodel追加可能なプラグインさへあれば後は何とかなりそうなんですが・・・
0465nobodyさん
2013/07/07(日) NY:AN:NY.ANID:???0466あ
2013/07/08(月) NY:AN:NY.ANID:kIUaRpvBhttp://www1.city.matsue.shimane.jp/tyumoku/johoseisaku/rubygw_kochiku.html
http://www1.city.matsue.shimane.jp/tyumoku/johoseisaku/rubygw_kochiku.data/youkyuushiyousho.pdf
0467nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???GUIからgemfileは編集できないってことなのでしょうか?
0468nobodyさん
2013/07/12(金) NY:AN:NY.ANID:0ocwBlfR0471nobodyさん
2013/07/14(日) NY:AN:NY.ANID:???0472nobodyさん
2013/07/15(月) NY:AN:NY.ANID:V1KW3/2Mhttp://weblog.rubyonrails.org/2013/7/12/Rails-3-2-14-rc1-has-been-released/
0473nobodyさん
2013/07/15(月) NY:AN:NY.ANID:???DreamWeaverみたいなの使って作って
それをあてがってる?
それともデザインもhtmlをタグ打ちしてる?
最近はデザインのほうが面倒く感じるようになってきた。。。
0474nobodyさん
2013/07/15(月) NY:AN:NY.ANID:IrAB52ny0475nobodyさん
2013/07/15(月) NY:AN:NY.ANID:???何か良いアドバイスないですか?
皆さん予め自分用のテンプレート作ってますか?
コントローラーから同じ変数だけビューに渡して
ビューだけそれぞれのページを
pc用、スマホ用に分けて表示させるかんじで
0476nobodyさん
2013/07/15(月) NY:AN:NY.ANID:???photoshopでカンプ作ってからコーディングする
livereloadがあるからエディタはなんでもいいんじゃないすか
0479nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???うは
初めて知った!!
みんな、デザイン部分はphotoshopとかでやってから
それを利用してテキスト部分だけをrailsであてがうのか。。。
俺、今まですべてタグ打ちでデザインレイアウトまでやってて
時間がかかりすぎてたから
レイアウト作るのは本当に億劫な作業だったわ
0480nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???ただ、コンプで検索してみたところ基本的にPC用デザインしか対応できなさそうだけど
スマホ用のデザインはどうしてる?
0481nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???1ページ1ページの読み込みがクソ遅い
都度更新が行われるSNSなんでキャッシュは実装していない
ソーシャルボタンも重くしてる要因だと思うけど
それ以外のページでも読み込みがクソ遅い
なぜ?
ページを読み込む際にカウント使ってリアルタイムの値を表示させまくってたりするから?
0482nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???phpMyAdminやphpのアクセス解析をRailsAppと併用して使いたいがためにApache2+Passengerの組み合わせを利用しています。
様々な記事を読んでいるとnginx+Unicornのほうが圧倒的に早いとのことです。
phpMyAdminやphpのアクセス解析を利用しつつ
nginx+Unicornを利用する方法はありますか?
0483nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???スマホサイトでもカンプ作るのは割りと普通だが、CSS3がほぼ対応してるからインブラウザデザインをすることも多い
ただスマホの場合はデザインの自由度が限られてるからlivereloadかけながらゴリゴリやっても問題ないかも
0484nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???cgiは基本的にapacheで処理しつつ、railsだけをnginxのupstreamで処理する
というかphpMyAdminもphpもnginxで動くから、すべてnginxに移行したほうが楽なんじゃないのか
nginxもapache同様ログが残せてWebanalizerも使える
0485nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???カンプってそのまま使えないの?
俺の見解だとただの完成予想図みたいなかんじなんだけど。
実際にそれを利用して、テキスト部分だけを変数的なもので入れ替えるってことはできるの?
0486nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???HTML用に書き出せることはできるけど、あくまで完成予想図だよ
ブラウザでデザインしてると一つの要素をいじると他の要素に影響与えたり、コーディングが複雑になると容易に変更できなくなる
カンプなら自分の考えを短時間で表現できるし、後からの変更に対応しやすい点が特徴
0487nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???やっぱりそうか
何らかの形で直感的にイメージ(レイアウト)を作成して
そこにRailsのコントローラーで吐き出したものをあてていくって出来ないかな?
そうすれば楽なのに
出来ればテンプレートとかあって
PC用、スマホ用のレイアウトとカバーできたらいいのに
0488nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???Railsって元々が遅いもんかな?
メモリ1GBのさくらVPSで色々試しています。
helperの多用とか、リロードごとのcount集計(カウンターキャッシュを使ってない)とかやってるとかなり遅い。
1ページが完全に表示されるまでに3秒くらいかかります。
同時にアクセスしてる人なんてほとんどいないのに。。。。
こんなもんなんですか?
大手とかみたいにサクサクと表示させるには
ページキャッシュの利用が必要ですか?
ログインサイトでTwitterみたいな投稿サイトだとキャッシュはフラグメントキャッシュくらいしか使えないので。。。。
しかもフラグメントキャッシュはあまり効果的じゃないみたいですね
0489nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???https://github.com/swanandp/acts_as_list
みなさん、モデルのレコードの順番を変更するのに、何使ってます?
acts_as_list以外に選択肢ってありますか?
0490nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???自分がさくら1Gプランでやってたときはunicornをアプリケーションサーバにして100ms/reqくらいのパフォーマンスでした
クックパッドはRailsで大量のトラフィックさばいて60ms/req前後出してるからチューニングすればそれくらいになるはずです
まずはapacheのabベンチなり、ブラウザのデベロッパーツールで純粋なリクエスト速度を測定しましょう
おそらく3秒もかかっていることはないでしょう
RDBSを使用しているかと思いますが、保存・更新はオンメモリで動作しないために非常に遅いです
リロードごとに更新処理が入るのならmongoやredisのようなデータベースを使用しましょう
helperなど独自メソッドを使用した場合の遅延は相当に多用しない限り大きくならないはず
実際にループで回した時にどれくらいの遅延になるかをベンチマークして把握しておきましょう
キャッシュはページキャッシュが有効ですが動的サイトには向きません
フラグメントキャッシュがどれだけ有効なのかはキャッシュを無効にした時にビューの読み込みにどれくらい時間がかかっているか、ログを出力すればわかるはずです
余りに時間がかかっている場合はフラグメントキャッシュを導入しましょう
0491nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???事細かい説明ありがとうございます
Railsアプリを立ち上げてるとき
ab -c 100 -n 500 "http://localhost"
を実行すると
Requests per second: 80.54 [#/sec] (mean)
程度
Railsアプリを立ち上げていないときは
1600くらいの結果がでています
なにが重いんでしょうか?
ちなみにユーザーがページ遷移するごとにUserテーブルのとあるカラムを毎回書き換えてます。
あとjQueryを利用していたり
link_toを使っていたり
ソーシャルボタンを多く表示していたり
1ページ内でページを表示するときに同時に20項目くらいカウントをとっています
どれが致命的に思えますか?
0492nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???できれば同時接続一人でリクエストに要する時間を出したほうがいいかもしれません
コードを修正した時にミリ秒単位で算出した方がわかりやすい(といっても好みの問題ですが)
さっきいったようにMySQLなどのRDBSでリロードごとに更新処理を挟むとそれだけでかなりの遅延になるので
redisのようなオンメモリで更新できるベータベースを使用するだけで大幅に時間短縮できます
jQueryやソーシャルボタンはクライアント側で読み込み後の非同期処理なのでアプリケーションのリクエスト速度には影響しません
ただし公式のソーシャルボタンはリクエスト数を非常に増やす要因なので、ボタンは独自に用意して自分でAPIを叩くといったことをすると非同期処理も短縮できるでしょう
0493nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???それともう一点だけ疑わしい点が!
application_controller.rb
の中に10ほどのアクションを記述しています。
しかも、どれも若干複雑な処理です。
これらはいろんなコントローラーから呼び出されるのを想定したため
ここ一カ所で集中管理しています。
もしかしてapplication_controller.rbの中のアクションって
ページごとにその値が必要、不要関係なく、
すべて実行されてしまい重くなっている原因になりえますか?
それとも、そのアクション自体を外部コントローラーから呼び出したときだけ、そのアクションのみが実行されるのでしょうか?←これが私の現在の認識なんですが
0494nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???mini profilerというgemで試しに各ページのリクエストに要する時間を見てみると
こんなかんじです
ページ
�@1771ms
�A1484ms
�B3388ms
�C624ms
�D381ms
�E583ms
�F305ms
�G1080ms
ページごとに大きく差はありますが
普通はどの程度までが許容でしょうか?
0495nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???さすがにいちいちクレクレしすぎw
どの程度が許容出来るかは数値じゃなくて実際の体感によるものだし、チューニングはベンチマークとって一つひとつ検証するしかない
0496nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???甘えちゃって申し訳ないです。
そうなんですね、やはり体感で検証しながら修正かけていくしかないんですね。。。
最後にどうか一つだけ質問させてください。
たとえば、
テーブル(モデル)�@〜�Dの異なる5種類のテーブル
それぞれで10レコード、合計50レコードを表示するとき
それぞれ1レコードづつにつき
5項目(カウント集計だったり、helperだったりを呼び出し)
あったとしたなら
表示するときに重くなって当然なのでしょうか?
それぞれ1レコードにつき40msで返してきても
50レコードあるので2000ms、つまり2秒になり体感だと重いです。
でも、いろんなDBサイトではこういう表示の仕方も普通にしてますよね?
その方式で素早い読み込みを
どうやって実現すればいいか悩んでいます。
0497nobodyさん
2013/07/16(火) NY:AN:NY.ANID:e/3ts/rmさくらインターネットVPSのIOPSが
http://pc.casey.jp/archives/153904156
Amazonクラウド、2テラバイトのSSD、60GBメモリ搭載で12万IOPSを実現するインスタンスを発表 − Publickey
http://www.publickey1.jp/blog/12/amazon2ssd60gb12iops.html
0498nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???http://blog.digital-squad.net/article/149685338.html
http://www.techscore.com/blog/2012/12/25/railsライブラリ紹介-n1問題を検出する「bullet」/
0499nobodyさん
2013/07/16(火) NY:AN:NY.ANID:???横からだけど、1ページ表示させるのに
何十、下手すると100以上のSQLを裏で発行させているのでは。
もしそうなら遅くて当然です。
むしろ今のサーバーは安いVPSでも頑張るなというのが率直な感想です。
0500nobodyさん
2013/07/17(水) NY:AN:NY.ANID:???複数のRailsアプリがあるとして、それらから何らかの統一された認証機構にアクセスして、
ユーザー認証を行いたいのですが、なにか良い方法はないでしょうか?
◆背景
目的毎に複数のRailsアプリを運用する予定があり、それぞれのRailsアプリでDeviceなどで個々に認証するようにしてしまうと、アカウント情報が分散してしまい、統一管理できない。ユーザーにRailsアプリ毎にアカウント情報の登録・管理の負担を与えてしまうことは避けたい。
◆現在考えている方策
VPSでLDAPサーバーを立て、ユーザーアカウントの登録・管理はこのLDAPサーバーで行う。各RailsアプリはこのLDAPサーバーを使って認証を行う。
という感じなのですが、上記以上の良い方法はありますでしょうか?
ちなみに、TwitterやFacebookのアカウントで認証させればいい、という方法は、これらのWebサービスを使っていない人もいるため、避けたいです。
あくまで、自前でアカウント管理を行い、各種Railsアプリがそれを見にいく方法でいきたいと思っています。
0501nobodyさん
2013/07/17(水) NY:AN:NY.ANID:???0502nobodyさん
2013/07/17(水) NY:AN:NY.ANID:???トレードオフのある状況では具体的な選択肢の長所と短所をすべて考慮したうえで決定を行うことが求められる。
0503nobodyさん
2013/07/17(水) NY:AN:NY.ANID:???「ベストプラクティス」というと、「うたがいなく常に最善である」という印象を与える。
大抵まちがった印象である。
どれだけ自信があったら「ベストプラクティス」などという言葉を疑いもなく使えるんだろうか。
私は「こうしなさい」などとは言えない。
今の自分の考えを説明するが、自分でもそれが正しいとは思わない。
ある特定の問題に対処するのに、こういう考え方ができる、というだけにすぎない。
たぶん1ヶ月たったら別の手法に向かってるだろう。
http://tomykaira.hatenablog.com/entry/2013/07/10/222012
0504nobodyさん
2013/07/17(水) NY:AN:NY.ANID:???http://ameblo.jp/archive-redo-blog/entry-10035200905.html
counter_cache
http://wiki.usagee.co.jp/ruby/rails/RailsGuidesをゆっくり和訳してみたよ/Active%20Record%20Associations
0505nobodyさん
2013/07/17(水) NY:AN:NY.ANID:???500msかかってるページで100sqlほど
1300msかかってるところで80sqlほど
1500msかかってるページで30sqlほどですね←sqlクエリ少ないのに何故か時間がかかってる
>>496にも書いたように
特定テーブル5種類>それぞれのテーブル特定レコード10個づつ
これをeachで回して
それぞれのレコードをレンダリングで呼び出しています
レンダリングしている内容にcountやら様々な情報が含まれています
それとCanCanのload_and_authorize_resourceを使っているのですが
これが重くなっている理由とかになり得ませんか?
0506nobodyさん
2013/07/17(水) NY:AN:NY.ANID:???マスタテーブルが複数あります。
特定レコードの各項目にはそのマスタテーブルのidで保持させている場合だと
特定レコードを1つ表示させるごとに
その項目の数だけsqlが発行されるのは仕方ないですよね?
たとえば
【対象テーブル】生徒
【マスタテーブル】性別 血液型 都道府県
で生徒を10件表示させようとしたとき
生徒テーブルにはseibetsu_id、ketsuekigata_id、todoufuken_idに数値が格納されているので
生徒1件につき少なくとも3回のsql発行
生徒10件の表示だと30回のsql発行になりますが、これが普通の設計方法じゃないのでしょうか?
どうやらこれが原因で遅くなってそうですね。。。
0507nobodyさん
2013/07/17(水) NY:AN:NY.ANID:???0508nobodyさん
2013/07/17(水) NY:AN:NY.ANID:y2fD7JwWhttp://qiita.com/tachiba@github/items/797ea74e7eeb7f32f886
0509nobodyさん
2013/07/17(水) NY:AN:NY.ANID:???http://nippondanji.blogspot.com/2010/03/innodbcount.html
0510nobodyさん
2013/07/17(水) NY:AN:NY.ANID:y2fD7JwWhttp://weblog.rubyonrails.org/2013/7/16/Rails-3-2-14-rc2-has-been-released/
0511nobodyさん
2013/07/17(水) NY:AN:NY.ANID:???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
0512nobodyさん
2013/07/17(水) NY:AN:NY.ANID:???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/
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
N+1問題は、ORMの典型的なパフォーマンス問題
http://dev.ariel-networks.com/articles/workshop/rails-activerecord/
0513nobodyさん
2013/07/17(水) NY:AN:NY.ANID:???そればっかりは良くも悪くもRailsの仕様だから劇的に早くするのは難しいよ
それか生徒テーブルに直で各マスタテーブルの値を持たすか
0514nobodyさん
2013/07/17(水) NY:AN:NY.ANID:???自己参照結合
自己結合(Self Joins)
http://wiki.usagee.co.jp/ruby/rails/RailsGuidesをゆっくり和訳してみたよ/Active%20Record%20Associations#m6658a2f
Self-referential has_many :through associations
http://blog.hasmanythrough.com/2007/10/30/self-referential-has-many-through
http://blog.hasmanythrough.com/2006/4/21/self-referential-through
http://japan.zdnet.com/blog/yoshimi/2007/11/22/entry_27016437/
0516nobodyさん
2013/07/18(木) NY:AN:NY.ANID:???昔からRDBを使ったシステムでパフォーマンスに問題がある場合、
個人的な感覚ですが9割以上はRDBの使い方や知識不足に原因があるように思います。
今回の場合も、まずその大量のSQL発行が原因でしょう。
> 生徒1件につき少なくとも3回のsql発行
> 生徒10件の表示だと30回のsql発行になりますが、これが普通の設計方法じゃないのでしょうか?
DBの論理設計の点ではお手本通りです。
物理設計(ここで問題になりそうなのは参照整合性制約の設定やインデックスの設定など)に関しては、
レスに情報がないので分かりませんが
(物理設計をおろそかにすると、データ件数が増えた場合、絶望的なパフォーマンスの問題が発生します)、
今現在提示されている情報の中で問題なのは、多数のSQLを発行している点です。
例で示されたテーブルから10件のデータを取得する場合、
生徒テーブル:1つのSQL
性別・血液型・都道府県テーブル:各10のSQL、合計30のSQL
を発行することになり、常識的なDBの使い方とは言えません。
このような場合は、性別・血液型・都道府県にNULLが入りうるなら外部結合、
入り得ないなら内部結合を使うべきでしょう。
それならば1つのSQLで済むはずです。
ActiveRecordを利用する場合、裏で発行されるSQLは隠蔽されるわけですが、
実際に使い物になるシステムを開発したいと考えるなら、
このあたりもしっかり押さえる必要があると思います。
望みのSQLを発行させるには、別途、本やネットで調べれば、
いくつかのノウハウが見つかると思います。
0517nobodyさん
2013/07/18(木) NY:AN:NY.ANID:???ありがとうございます
内部結合と外部結合について教えていただけませんか?
includesは外部結合ですか?
0518あ
2013/07/18(木) NY:AN:NY.ANID:???http://www.sophia-it.com/content/外部結合
0519nobodyさん
2013/07/18(木) NY:AN:NY.ANID:???railsとsqlは分けて考えましょう
0520nobodyさん
2013/07/18(木) NY:AN:NY.ANID:Ci9HSP1wアクションは指定してないurlでもエラーが出てないことがありますが
あれはどうやるのでしょうか
http://www.sample.com/controller/
でもエラーが出てないってことです
0521nobodyさん
2013/07/18(木) NY:AN:NY.ANID:???生徒テーブル:1つのSQL
性別・血液型・都道府県テーブル:各10のSQL、合計30のSQL
この例で行くと、includesを使えば4つのSQLで済むけど、そういう話じゃないのか?
そもそも、性別を別テーブルにする意図がわからないんだけど。最近は体が男で心が女とかも
あり得るし、その個人がどちらとして扱って欲しいかを含めると6通りの性別が考えられるけど、
それでも高々6種類しかないものをテーブルにする必要があるんだろうか。血液型もしかり。
0522nobodyさん
2013/07/19(金) NY:AN:NY.ANID:???コントローラーでは上記のようにしています。
index(�@views/students/index.html.erb)では、
10件のstudents(�Aviews/students/_student.html.erb)をレンダーするとします。
そして、この�Aの中には
上に書いた 性別 血液型 都道府県 が表示されます。マスタテーブルの値を参照。
↑はincludesで解決できそうなのですが問題は次の箇所です。
�Aにはhelperが使われていて
そのhelperが
�Bjyugyo 授業レコード(生徒が取っている授業)や
�Cnormal_diary 日記レコード(生徒の日記)や
�Dbukatsu_diary 部活日報レコード(生徒の部活の日報)があります
これらは全て1対多です(生徒:各テーブル)
そこで�Aをレンダーする際に
�B、�C、�Dへのリンクボタンも表示します。
ここで�Cと�Dについては、ボタンへ件数(カウント)の表示および、
本日の投稿があればボタンを赤く表示する、といった仕様にしています
(つまり10レコード表示すると、この処理×10回SQLが発生?)
なので、さきほどのincludes表記だけじゃ対処しきれないみたいです。
例えばnormal_diaryのhelperはこのようになっています。ですので都度SQLが発行されるのかもしれません↓
0523nobodyさん
2013/07/19(金) NY:AN:NY.ANID:???last_diary = student.normal_diaries.order('created_at DESC').first
if last_diary && last_diary.created_at.today?
link_to sanitize("日記 ("+ student.normal_diaries.count.to_s+")" , normal_diaries_path(student), :class => 'red_color_button'
else
link_to sanitize( "日記 ("+ student.normal_diaries.count.to_s+")" , normal_diaries_path(student), :class => 'button'
end
end
こんなかんじです
同様に�Dのhelperのbukatsu_diary_button(student)も
各�A(views/students/_student.html.erb)で呼び出されます。
その度にSQLが発行されます。
>>522に書いた
@students = Student.page(params[:page]).per(10).includes(:genders, :blood_types, :prefectures)
だけでは対処できません
0524nobodyさん
2013/07/19(金) NY:AN:NY.ANID:???0525nobodyさん
2013/07/20(土) NY:AN:NY.ANID:???まぁroutes.rbの記載量にもよるんだろうけど
1ページにどれくらいlink_toが出現してたら
顕著に遅さを感じるようになるんだろう?
0526nobodyさん
2013/07/20(土) NY:AN:NY.ANID:???0527nobodyさん
2013/07/20(土) NY:AN:NY.ANID:???0528nobodyさん
2013/07/20(土) NY:AN:NY.ANID:???http://www.ustream.tv/recorded/25419544
Enumerable#entries
http://ruby-doc.org/core-1.9.3/Enumerable.html
0529nobodyさん
2013/07/20(土) NY:AN:NY.ANID:netzHBJp最初のページ以外ではJSの読み込み(とそれに続く評価)も行わないのがデフォ。
0530nobodyさん
2013/07/20(土) NY:AN:NY.ANID:???ありがとうございます
その連結したものってどこかで見れるのでしょうか
undifinedされていてどうも正常に読み込まれてない気がするんですが
0532nobodyさん
2013/07/21(日) NY:AN:NY.ANID:???ありがとうございます
developmentでrails serverで起動しているときはどこに吐かれますか?
0534nobodyさん
2013/07/21(日) NY:AN:NY.ANID:z4jXw/gy0535nobodyさん
2013/07/21(日) NY:AN:NY.ANID:???自分で調べてわからないんです
>>534
ありがとうございます
するとdevelopmentでは読み込み順とかを確認するために生成されたjsを読むすることはできないんですか
0536nobodyさん
2013/07/21(日) NY:AN:NY.ANID:???0537nobodyさん
2013/07/21(日) NY:AN:NY.ANID:z4jXw/gyconfig.assets.debug = false # 個別読み込みをしない
config.assets.compile = true # 連結などのコンパイル処理は行う
あたりを書けてみればどうか。
0538nobodyさん
2013/07/21(日) NY:AN:NY.ANID:z4jXw/gy0539nobodyさん
2013/07/22(月) NY:AN:NY.ANID:D6h65OPKhttp://www.amazon.co.jp/gp/product/B00E25KVLW
0540nobodyさん
2013/07/22(月) NY:AN:NY.ANID:???半角英数字なら20字
日本語なら10字
みたいな設定の方法ってありますか?
UTF8になる前は
20バイトまで〜みたいな設定が出来たのでしょうが
今ではそういう類のことはどのように対応するのでしょうか?
0542nobodyさん
2013/07/22(月) NY:AN:NY.ANID:???調べてみたのですが
日本特有の問題?だからかなかなか参考が出てきません。
よければどういう書き方をすればいいか見せてもらえますか?
0543nobodyさん
2013/07/22(月) NY:AN:NY.ANID:???0544nobodyさん
2013/07/22(月) NY:AN:NY.ANID:4qZfH6dA混在したら何文字までになるんですか?
0547nobodyさん
2013/07/23(火) NY:AN:NY.ANID:???正規表現でもなんでも使ってやればいいじゃん
0548nobodyさん
2013/07/23(火) NY:AN:NY.ANID:???http://www.postgresql.jp/events/jpug-pgcon2013
0550nobodyさん
2013/07/24(水) NY:AN:NY.ANID:???http://blog.sumyapp.com/2013/07/no-dream-crowdsourcing/
0551nobodyさん
2013/07/24(水) NY:AN:NY.ANID:???http://www.lancers.jp/work/detail/171339
0552nobodyさん
2013/07/24(水) NY:AN:NY.ANID:GIiGlKgVhttp://blog.sumyapp.com/2013/07/no-recommend-rails/
0553nobodyさん
2013/07/25(木) NY:AN:NY.ANID:qrUaN9f/http://www.lancers.jp/work/detail/34672
0554nobodyさん
2013/07/29(月) NY:AN:NY.ANID:???テキストボックス(入力不可)
ボタン
があってセレクトボックスの初期値は空白
ボタンは押下不可
この状態でセレクトボックスで選んだ値でDB検索
値をテキストボックスに表示して、
1以上であれば、ボタンが押下可能になる
というのを作りたいんですが
どこからどこまでかJavaScriptで、どこからどこまでがRubyでやるのかわかりません
・セレクトボックスの選択と、選択した値を引数にしてRailsのアクションの呼び出しはJavaScript
・DB検索はRails
までは分かるのですが、ここから先、たとえばボタンのenabledを変更するのは誰がやるのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています