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

【RoR】Ruby on Rails Part13

レス数が900を超えています。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/
0820nobodyさん2012/02/04(土) 08:53:05.62ID:Prkek0Dn
>>818
ググッて来ましたが違うようです

>>819
ありがとうございます。
本番環境もローカルもダメです

本番サーバーでいきなりMysqlのメモリ増やす→あれなんか重い
ローカルで確認の為にMysqlのメモリ増やす→あれなんか重くなった


両方設定戻しても重さは元に戻らず
両方Productionで動かしても変わらないです
ログは定期的に消してます

”重くなった”は、2日前と比べてです
データ量も殆ど変わってないですし、別サーバー持ってくとサクサク動くので
Mysqlのメモリをいじったのが引き金になったようです
0821nobodyさん2012/02/04(土) 09:03:56.06ID:Prkek0Dn
すいません、今Sqliteで同じものを動かした所めちゃくちゃさくさく動きました
どうやら問題はMysqlにあるようです
そうなると、Mysqlスレになるのかな?

アドバイスありがとうございました
0822nobodyさん2012/02/04(土) 09:04:47.54ID:???
なんでただの英語ぐぐってるんだよ…
メモリの設定もいろいろあるから、どこを500MBに変えたかだな
0823nobodyさん2012/02/04(土) 09:12:14.59ID:Prkek0Dn
>>822


key_buffer?を増やしてみました
その後色々いじったので何がなにやら……

PHPMYadminで赤いところを見ると

Innodb_buffer_pool_reads 526 InnoDB がバッファプールの内容を利用できず、シングルページ読み込みを行わなければならなかった論理読み込みの回数
Handler_read_rnd_next  86 G データファイルの次の行を読み込んだリクエストの数。この値が高いのはテーブルスキャンを大量に実行しているためです。一般にこれはテーブルのインデックスが不適切か、クエリがインデックスを利用するように書かれていないことを意味します
Created_tmp_disk_tables 1,598 k ステートメント実行中にサーバがディスク上に自動生成した一時テーブル数。Created_tmp_disk_tables の値が大きい場合は tmp_table_size の値を増やしてディスク上ではなくメモリ上に一時テーブルを構築した方がよいかもしれません
Opened_tables 414 開いているテーブルの数。開いているテーブルが多い場合はおそらくテーブルキャッシュの値が小さすぎます

82Gのところがなんかおかしい気がします
0824nobodyさん2012/02/04(土) 11:37:03.61ID:CRUXYrsz
MySQLとrails同じサーバーで動かしてるの?
MySQLにメモリ割り当てすぎてスワップ使ってるとかなんじゃないかなぁ。
0825nobodyさん2012/02/04(土) 11:58:01.12ID:???
アプリのルートで表示させるページのコントローラーってどうするのが定石ですか?

今まではどこかのサンプルで見たIndexControllerって名前でずっとやってきてました。
root to: 'index#home'
みたいな感じで。
特に不都合はないですが、もっと良い方法とか命名とかありますか?
0826nobodyさん2012/02/04(土) 11:59:11.63ID:???
別にそれで何の問題もないのでは。
0827nobodyさん2012/02/04(土) 13:06:37.78ID:???
>>825
俺はmain#indexにしてる
0828nobodyさん2012/02/04(土) 13:46:13.35ID:???
>>812
config/environments/production.rbが設定ファイルで、
config.action_controller.page_cache_directory = "ここで設定"

参考) http://railsdoc.com/cookie_cache


>>823
状況がよくわからんので箇条書きで色々と書くね
鵜呑みにせずに参考程度にしてください

・インデックスをはってないのは間違いないし、そこが絶対にボトルネックになってると思う
>Handler_read_rnd_next  86 G から察するにインデックスを適切に張ってないのは間違いなくて、データを全スキャンしてる

・Railsには一つのSQLクエリごとに何秒かかったかをログにしてくれているのでそれを見る
 あなたの場合はこれをまず詳細に分析するべきだと思う
 表示はms(マイクロ秒)での表示 1000ms=1秒 適切なクエリなら数msから数十msで返って来ているはず
 インデックスを適切に張っていないと遅いクエリ(スロークエリ)が頻出しているはず

・MySQLのストレージエンジンにはInnoDBとMyISAMがある
 MySQL5.5以降はデフォルトがInnoDBで、それ以前のバージョンならMyISAM
 で、「MySQLに割り当てられるメモリを大きくする」という場合に、MyISAM使ってるのにInnoDBの割当メモリを大きくしても意味が無い 逆もしかり

以上です
とにかくインデックスきちんとすれば4Gもメモリ積んでるサーバーなら余裕で捌けるはずなので頑張ってください
0829nobodyさん2012/02/04(土) 16:07:59.57ID:Prkek0Dn
>>824
同じサーバーで動かしています
どうやらそのようでした

再起動したら少しましになりました

>>828
ありがとうございます。
InnoDBを使っていたので全く見当違いのメモリを増やしておりました
インデックスを貼ろうと思ったのですが、ちょっと初心者もいいとこでどこに貼っていいのか……

Railsの効率の悪いSQLを探知してくれるプラグイン?あったと思うのですが3になってから使えなくなってしまいまして……

0830nobodyさん2012/02/04(土) 17:05:32.58ID:s47e9LRe
とりあえずmysqlのスロークエリログくらい見ないと。
0831nobodyさん2012/02/04(土) 17:16:05.77ID:Prkek0Dn
>>830
ですね、痛感しました
しかし、スロークエリログを吐き出す設定にしているのにファイルが出力されません
なんででしょう

とりあえず色々いじってみたいと思います
0832nobodyさん2012/02/04(土) 19:18:04.98ID:???
>>831
バックアップしとけよ
あといきなり本番サーバさわるな
0833nobodyさん2012/02/05(日) 00:35:52.53ID:83n8dgCi
プリコンパイルしたファイルって
hogehoge**************************
みたいになりますが、application.jsという形で生成はされないですか?

アクセスのたびに毎回ライブコンパイルが走り困っております
0834nobodyさん2012/02/05(日) 02:48:02.82ID:???
railsとcakephp
初心者にはどちらが向いてますか?
railsの場合はレンタルサーバーの環境ごと考えなきゃいけないから
面倒くさいのかな?という認識
0835nobodyさん2012/02/05(日) 07:21:14.51ID:???
どっちも習得の手間はかわらないと思う。
使いたいサーバで選んだらいいんじゃない?
OSがWindowsでVMとか使う気ないならPHPの方が気楽に開発環境整えられるかもな。

Railsの場合は使えない鯖ではそもそも考えるだけ無駄だから
鯖が決まってないならそんなに悩む必要はないと思う。
0836nobodyさん2012/02/05(日) 09:32:04.84ID:5hDTMn6/
404 Blog Not Found:そろそろPHPに関して一言いっとくか
http://blog.livedoor.jp/dankogai/archives/50835571.html
0837nobodyさん2012/02/05(日) 10:13:56.63ID:???
ずいぶん古い記事をひっぱってきたな。
個人的にはRuby(っていうかRails)もPHPも両方触って気に入ったほう使えばいいと思うよ。
先のことを考えると両方触っといて損はないと思うし。
0838nobodyさん2012/02/05(日) 10:27:25.69ID:???
今からPHPはないだろ…
0839nobodyさん2012/02/05(日) 10:34:13.56ID:???
言語の一つや二つ覚えるのに時間の無駄とかないから。
気になる部分は全部検討するぐらいのフットワークの軽さが必要だと思うよ。
0840nobodyさん2012/02/05(日) 10:51:12.27ID:???
今までC, C++, Java, Perl, VB, Prolog, (PHP,) Rubyと触ってきたけどPHPだけは性に合わなかった
使えるけど使いたくない
0841nobodyさん2012/02/05(日) 11:01:19.14ID:???
PHPはうんこだと思うけど一応触った上でうんこと蔑むのが最低限の礼儀だと思う。

ただ頭数の揃えやすさやとりあえずの速さでいくとそう悪い言語じゃなくなっちゃうんだよな・・・
0842nobodyさん2012/02/05(日) 11:10:38.58ID:83n8dgCi
Pipelineのファイルをサーバーから直接返すのってどうやるん?
画像1個読み込むのにもRails呼ばれるのは重すぎやん
0843nobodyさん2012/02/05(日) 11:38:38.62ID:???
Webサーバ側でそのように設定する。
nginxとかApacheとかで
0844nobodyさん2012/02/05(日) 11:46:16.72ID:83n8dgCi
>>843
プリコンパイルすると

hoge.***********.js
とかになるやないですか?

でも、生成されるソースでは
application.css
とか
hoge_image.**********.png
になってるので

サーバーから呼んでも勿論存在しないと言われるのでRailsに一度投げるしか無い
って感じです

方法としては、ソースコード生成時に<img src="hoge_image.png">を<img src="hoge_image.************.png">
って手打ちする方法が一つ

そもそも、digestを付けないようにプリコンパイルするが一つ

だと思うのですがどっちも上手くいかんです

congig.assets.digest = false
にしてもtrueにしても効果ないし

きちんとimage_tagから画像呼んでもdigestが付加されないでござった
どうしようもないので、Assets以下をPublicに移動したら「そこにCss置くなks」って起動すらしてくれない



0845nobodyさん2012/02/05(日) 11:47:13.32ID:83n8dgCi
>でも、生成されるソースでは
>application.css
>とか
>hoge_image.png
>になってるので


でござった
0846nobodyさん2012/02/05(日) 12:03:52.32ID:83n8dgCi
なんか調べると、image_tagを使うと自動で後ろの-************:がくっつくらしいですね
image_tag使っても表示されないのはなぜなんでしょ……

そんな設定とかあります?
0847nobodyさん2012/02/05(日) 12:15:39.78ID:83n8dgCi
すんません自己解決です

Railsを途中で3.1→3.2にしたのが原因のようです
新しいの作ってフレームワーク部分以外移動したら全部動きました
連レスごめんなさい
08488252012/02/05(日) 14:14:38.14ID:???
>>826 >>827
ありがとうございます
なんかindexって名前に違和感をおぼえて
0849nobodyさん2012/02/05(日) 18:42:15.47ID:yrFQBJuz
HelloControllerとかプロダクションコードに入ってたりする案件だってあるぐらいだ。
IndexControllerだったらだいぶマシ。
0850nobodyさん2012/02/05(日) 22:06:59.42ID:???
rails sで起動したサーバ時々固まらない?
サーバの画面でenter押せば進むんだけどなんでだろう。
0851nobodyさん2012/02/05(日) 23:41:33.56ID:???
あるな
0852nobodyさん2012/02/06(月) 00:56:50.86ID:???
ないけど
0853nobodyさん2012/02/06(月) 01:02:33.33ID:???
むしろrails sは遅すぎて使ってない
apache再起動の方が10倍くらい早い
おれだけ?
0854nobodyさん2012/02/06(月) 12:39:14.01ID:6CAJ3kKy
質問させてください。
Winで開発していたアプリを
本番環境を想定した仮想CentOS上で動かそうとしたんですけど
winでは動いていたものが、CentOS上だと

ActionView::Template::Error (invalid byte sequence in UTF-8):

というエラーをはいて動かなくなってしまいました。
エラー箇所はapp/views/layouts/application.html.erbの
<%= stylesheet_link_tag 'application', :media => 'all' %>
<%= javascript_include_tag "application" %>
なんですけど、この二行をコメントアウトすると、表示は崩れますが動きます。
文字コードが何かおかしいのかとも思い
app/assets/stylesheets
app/assets/javascripts
内も調べたんですが、これといっておかしなところも見つかりませんでした。
仮想CentOS上で適当に作ったアプリは普通に動くんですけど
これってどのような原因が考えられるのでしょうか?
環境はruby1.9.3、rails3.2.1です。
0855nobodyさん2012/02/06(月) 13:50:54.28ID:tyxpRyp2
>>854
書いてある通り
CSSやJSがUTF8になってない
08568542012/02/06(月) 14:02:57.33ID:???
>>855
app/assets/stylesheets
app/assets/javascripts
内のファイルを全部エディタで開いてみる限りUTF8(BOM無し)のようですし
ディレクトリ内を試しに全削除しても同様のエラーが出てしまいます。
それとも、もっと違ったところが間違っているのでしょうか?
0857nobodyさん2012/02/06(月) 15:33:07.95ID:???
>>854
ちなみにコメントアウトしたとき、表示が崩れてるっていうのは、文字化けしてるの?
0858nobodyさん2012/02/06(月) 15:50:12.13ID:???
ディレクトリ消してもダメってことは無いわ。再起動してないだけだな。
もしくは precompileしたのが残ってる。
08598542012/02/06(月) 16:14:40.89ID:???
>>857
いいえ、スタイルが適用されてないだけです。
08608542012/02/06(月) 16:41:25.32ID:???
>>858
おっしゃるとおり、precompileしたものはしていて消しててなかったです。
public/assets
.sass-cache
などそれっぽいものを削除して再起動してみたのですが同じエラーが
precompileは上記以外にも消すものってありますか?
0861nobodyさん2012/02/06(月) 17:27:45.73ID:???
ぜんぜん違うとおもうけど、stylesheet_link_tagの次のスペースって普通の半角?
0862nobodyさん2012/02/06(月) 17:41:08.00ID:???
>>861
はい、そこらへんは確認しました。

あと、さきほどprecompileのヒントをいただいたので
試しにrake assets:precompile --traceしてみたら

** Execute assets:precompile:primary
rake aborted!
invalid byte sequence in UTF-8
/usr/local/rvm/gems/ruby-1.9.3-p0/gems/hike-1.2.1/lib/hike/index.rb:80:in `block in entries'
/usr/local/rvm/gems/ruby-1.9.3-p0/gems/hike-1.2.1/lib/hike/index.rb:80:in `reject'
/usr/local/rvm/gems/ruby-1.9.3-p0/gems/hike-1.2.1/lib/hike/index.rb:80:in `entries'

みたいに出ました。
hike/index.rb:80を見てみたんですが自分の能力では、どうしてなのかちょっとわからなかったです。
0863nobodyさん2012/02/06(月) 18:07:42.98ID:???
routes.rbで

resources :samples

によって定義されたルートたちを
"admin/samples"のようなURLに一括して置き換える方法ってありますか?
できれば元のルートも無効にしたいのですが。
08648632012/02/06(月) 18:13:46.83ID:???
自己解決しました。

resources :samples, :path => "admin/samples"

と変更することでうまく行きました。
0865nobodyさん2012/02/06(月) 20:15:58.58ID:FI1AngH7
>>862
>hike-1.2.1/lib/hike/index.rb

ブロックの中で例外になってて、ブロックの中身は
entry.to_s =~ /^¥.|~$|^¥#.*¥#$/

entryはPathname.new(path)の中にある個々のファイルの名前文字列。
正規表現のほうはスクリプトエンコーディングになってるはず。

ファイル名のエンコーディングって面倒くさそうだな。
とりあえずブロックの中にいるときにentryのエンコーディングやバイト列を
検分してみたらどうか。
0866nobodyさん2012/02/06(月) 21:42:42.42ID:???
>>865
ありがとうございます。

@entries[key] ||= Pathname.new(path).entries.reject { |entry|
p entry.to_s
entry.to_s =~ /^\.|~$|^\#.*\#$/
}.sort

にしたら
"images"
"mark.png"
"h1.png"
"favicon.ico"
"blank.png"
"ico.ico"
"\x83R\x83s\x81[ \x81` h2.png"

と出力されて一番下の名前文字列でエラーが出ているようです。
なんでこんな変な文字が入り込んでいるのか。。

ちなみに>>854のも
<%= stylesheet_link_tag %>
にするとエラーが出ず
<%= stylesheet_link_tag 'foo' %> #fooは存在しないファイル名
とするとinvalid byte sequence in UTF-8が出ます。
ファイル名を呼び出そうとすると何故かエラーになります。
0867nobodyさん2012/02/06(月) 22:02:32.25ID:FI1AngH7
>>866

"¥x83R¥x83s¥x81[ ¥x81` h2.png".force_encoding('Shift_JIS').encode('UTF-8')
=> "コピー 〜 h2.png"

これってどう対応するベッキー?
08688542012/02/06(月) 22:46:51.46ID:???
>>867
あわぁぁ、そうだったのかー!
そんなファイルを作ったのすっかり忘れていました。。
ありがとうございます。
"コピー 〜 h2.png"を消すとweb表示もprecompileもうまくいきました。

それにしてもstylesheet_link_tagやjavascript_include_tagで画像まで読み込んでいるんですね。
app/assets/stylesheets
app/assets/javascripts
はさんざん検証したんですが、
app/assets/images
は全くのノーマークでした。

でも2日間悩んでいたものが皆さんのおかげで動くようになりました。
本当にありがとうございました。
0869nobodyさん2012/02/06(月) 22:47:53.84ID:???
なんだ日本語ファイル名か。
アップロードしたものなら、日本語入らないようにする、もしくはアップロード後UTF8にする。
そうでないなら普通にファイル名をUTF8にする。
0870nobodyさん2012/02/06(月) 23:25:29.54ID:FI1AngH7
なんとなくforce_encoding使っちゃったけど、 encode('UTF-8', 'Shift_JIS') でよかった。
0871nobodyさん2012/02/07(火) 01:31:33.28ID:???
>>853
まちがいない
0872nobodyさん2012/02/07(火) 07:50:38.92ID:???
developmentモードが遅いのは当たり前。
apache再起動という全然違うものと比べてるのもおかしい話。

あとは単に自分のマシンが遅いんじゃないのかな。
あとWindows使ってるとか。rubyが1.8系とか。


0873nobodyさん2012/02/07(火) 07:51:21.34ID:???
871=853
0874nobodyさん2012/02/07(火) 17:21:53.23ID:T0i5g/PH
コントローラーのアクションの中でページキャッシュの設定って出来ません?

編集が完了したらロックかけて、ページキャッシュにしたいのだけど
どうやってすればいいのか……
0875nobodyさん2012/02/07(火) 20:51:41.88ID:???

Twitter Bootstrapが大幅バージョンアップ!して凄まじいことに・・・ | IDEA*IDEA
http://www.ideaxidea.com/archives/2012/02/twitter_bootstrap_v2.html

https://github.com/seyhunak/twitter-bootstrap-rails
gem 'twitter-bootstrap-rails'

https://github.com/twitter/bootstrap/

0876nobodyさん2012/02/08(水) 06:55:10.76ID:???
みなさん、OSとIDEは何を使ってますか?

ubuntuとgmateで満足してたんですけど、Windowsならvimかaptanaですか?
0877nobodyさん2012/02/08(水) 07:45:14.37ID:???
Ubuntu+gmateで良いのでは。
好みでgmateをvimかemacsに変える程度で。

自分の見た範囲だとRailsやってる会社はMacが多かった。
事務方以外は全員Macとかザラ。
フリーランスの人とかはほぼ全員Mac。
たまにLinux。

Windowsでもどうせ仮装マシンにLinux入れて、ターミナル繋いで使うし。

0878nobodyさん2012/02/08(水) 08:06:30.84ID:???
VMでLinux入れてSambaで繋いで、MacVimで編集してる
0879nobodyさん2012/02/08(水) 09:44:42.41ID:???
レスありがとうございますた

ZENBOOKが欲しくなっちゃってきいてみたのです
Mac+textMate人気ですよね
MBAにしようか悩む
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だと一箇所いじったら変数キャストして例外処理から書きなおしてーみたいな感じだった気がします
あんまり覚えてないのですが

と、色々な理由から生産性は高い気がします
レス数が900を超えています。1000を超えると表示できなくなるよ。