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

【RoR】Ruby on Rails Part14

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/02/18(土) 00:34:00.31ID:9HHBFqZR
前
http://kohada.2ch.net/test/read.cgi/php/1320393984/

■参考サイト
<英語>
本家: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://find.2ch.net/?STR=heroku&COUNT=10&TYPE=TITLE&BBS=ALL
0002nobodyさん2012/02/18(土) 00:55:55.28ID:???
まさかの 2
0003nobodyさん2012/02/18(土) 03:19:03.97ID:???
http://stackoverflow.com/questions/tagged/ruby-on-rails
http://stackoverflow.com/questions/tagged/ruby-on-rails-3
http://stackoverflow.com/questions/tagged/heroku
0004nobodyさん2012/02/18(土) 22:22:38.95ID:???
paperclipなど使えば
画像のアップロード機能を簡単に実装できますが
画像の命名規則を数字でなくランダムにする事って可能ですか?
0005nobodyさん2012/02/18(土) 22:27:52.65ID:???
可能
0006nobodyさん2012/02/18(土) 23:47:30.71ID:???
>>5
hogetest.com/home

にusersテーブルを表示させようとしてます。

このようにコントローラ名と扱うテーブルが異なる場合は
home controller
home model
home view

はどのような表記になりますか?
0007nobodyさん2012/02/18(土) 23:59:33.01ID:???
>>6
どこが画像なの?
0008nobodyさん2012/02/19(日) 01:49:29.93ID:???
>>7
ごめんなさい
誤ってアンカがついちゃったみたいです
0009nobodyさん2012/02/19(日) 04:54:30.03ID:???
>>6
よくわからないけどURLとコントローラとの関連づけはroutes

userを表示するだけなら、config/routes.rbで
get '/home' => 'users#index'
これで /home にアクセスすると users controller の index が呼ばれる
modelとviewはそのままでいい

って話?
0010nobodyさん2012/02/19(日) 09:10:59.39ID:???
>>9
それです。
ありがとうございます
0011nobodyさん2012/02/19(日) 16:01:36.23ID:???
おまえら開発環境何使ってるか教えろください
0012nobodyさん2012/02/19(日) 16:21:09.16ID:cQZsA+bI
Terminal.appとzshとTextMateとSafari
0013nobodyさん2012/02/19(日) 16:44:32.24ID:???
Emacs+Rinari
0014nobodyさん2012/02/19(日) 17:16:02.48ID:???
Mac で vim, emacs
homebrew, VMWare Fusion

あとは検証用にブラウザと各種実機(iPhone, iPad, Android, ガラケー)
0015nobodyさん2012/02/19(日) 18:04:39.19ID:???
IDE使ってる人おらんの?
0016nobodyさん2012/02/19(日) 19:46:49.98ID:???
RubyMine使ってるよ。
英語耐性ない奴には使えない、とだけ言っておく。
0017nobodyさん2012/02/19(日) 20:02:43.37ID:cQZsA+bI
そういえば4が出てるね。RubyMine。
0018nobodyさん2012/02/19(日) 21:21:21.08ID:???
Ruby on Railsのパフォーマンス向上に関する10のtips
http://blog.tkmr.org/tatsuya/show/268-ruby-on-rails-10-tips

ごくごく基本的な 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

Rails で MySQL を使うときの注意点 | METAREAL
http://www.metareal.org/2007/07/24/notes-on-rubyonrails-with-mysql/
0019nobodyさん2012/02/19(日) 21:22:00.72ID:???
SQLite3にmigrationでadd_indexしても速くならない - 職業的思考内容
http://d.hatena.ne.jp/yyamasak/20090317/1237270461

jijixi's diary - 車検費用 , ごくごく基本的な Ruby on Rails のパフォーマンスチューニング
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20071114

[Rails] ActiveRecordでの検索時にインデックスの使用を強制する(MySQL用) - 射撃しつつ前転
http://d.hatena.ne.jp/tkng/20080812/1218532322

http://d.hatena.ne.jp/kurusaki/20081019/1224358283
0020nobodyさん2012/02/19(日) 21:26:47.07ID:???
annotate_models は、テーブルの情報をModelとFixtureのファイルに コメントとして書き込んでくれる非常に便利なプラグイン
http://blog.s21g.com/articles/318
http://www13.atwiki.jp/maimuzo/pages/41.html

Railsで、マイグレーション作成時に、カラムにコメントを設定し、それをデータベースに設定する ColumnComments という便利なプラグイン
http://ishikawa.r-stone.net/2008/08/rails-migration-column-comment.html

Rails 2.3のApplication Templateで煩わしい初期設定とはおさらばする! - func09
http://www.func09.com/wordpress/archives/426

「RailsWizard」を使って最速で開発を始めましょう - Back yard : yuya_lush’s report
http://d.hatena.ne.jp/yuya_lush/20110707/1310021773

Unexpected Run: Rails3.0でモデルのER図を簡単に出力する方法
http://sawada0903.blogspot.com/2010/10/rails30er.html

RailRoadでRailsのソースからER図を作成する - 橋本幸樹のいまさら日記
http://d.hatena.ne.jp/koki-h/20090319/1237429076

JUDEで描いたクラスをそのままRuby on Railsで動かすプラグイン:CodeZine
http://codezine.jp/article/detail/2377
0021nobodyさん2012/02/19(日) 21:29:20.49ID:???
[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/

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/
0022nobodyさん2012/02/19(日) 21:30:43.23ID:???
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
0023nobodyさん2012/02/19(日) 23:16:38.08ID:uJPCefK9
twitter bootstrap railsを使ったら職が見つかり彼女も出来て背も3センチ伸びました。 - ppworks blog
http://ppworks.hatenablog.jp/entry/2012/02/19/033644

Twitter Bootstrap
http://twitter.github.com/bootstrap/

Webシステム開発者に送る便利なテンプレート「Web App Theme」
http://www.moongift.jp/2009/06/web_app_theme/
http://github.com/pilu/web-app-theme

Install any HTML theme/template into your Rails app
http://drnicwilliams.com/2009/10/06/install-any-html-themetemplate-into-your-rails-app/
http://github.com/drnic/install_theme

http://themeforest.net/
0024nobodyさん2012/02/19(日) 23:20:36.68ID:uJPCefK9
リンギオ - Railsで遅延読み込みする
http://ringio-blog.appspot.com/2011/08/to-lazy-loading-in-rails

Railsで高速表示のために遅延読み込みを利用する - お題目うぉっち
http://blog.livedoor.jp/maru_tak/archives/50698407.html

Togetter(トゥギャッター) - まとめ「700万PVのRails製サイトが月$60のVPS(メモリ1GB)で動かせるという話」
http://togetter.com/li/4514

Rails アプリを nginx の拡張モジュールで置き換えて高速化する方法 - HeartRails Tech Blog
毎秒 1000 アクセスはクリア。CPU の使用率は 25% 前後
http://techblog.heartrails.com/2011/01/rails-nginx.html
0025nobodyさん2012/02/19(日) 23:24:12.94ID:uJPCefK9
高トラフィックサイトをRailsで構築するためのTips基礎編
http://www.slideshare.net/kaznum/railstips

Gregg PollackとScaling Railsのハウツー
1つには、Railsアプリケーションをうまくスケーリングするために必要なすべての情報をRails開発者に与えること。
開発者は、これらの技術を使用する必要はないかもしれません。
しかし、できれば、開発者がビデオを見て、何百万人の同時ユーザーを扱うRailsアプリケーションを
作成できます、とクライアントに言える自信を持ってもらいたいのです。
2番目に、Railsアプリケーションをスケーリングすることがどれほど簡単かを、他の言語の開発者に示すこと。
http://www.infoq.com/jp/articles/gregg-pollack-scaling-rails

Ruby Proxies for Scale, Performance, and Monitoring
http://www.slideshare.net/igrigorik/ruby-proxies-for-scale-performance-and-monitoring-gogaruco-igvitacom-1396734

osc2008_opensuse-moonlinx.pdf (application/pdf オブジェクト)
Perlbal
http://blog.geeko.jp/wp-content/uploads/2008/09/osc2008_opensuse-moonlinx.pdf
0026nobodyさん2012/02/19(日) 23:26:31.62ID:uJPCefK9
Games for the Masses: Scaling Rails to the Extreme
http://www.slideshare.net/wooga/games-for-the-masses-scaling-rails-to-the-extreme

ドリコム的Railsアプリ開発流儀
http://www.slideshare.net/takafumionaka/rails-11635710
0027nobodyさん2012/02/19(日) 23:29:23.13ID:uJPCefK9
なぜ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

0028nobodyさん2012/02/19(日) 23:29:41.43ID:uJPCefK9


はてなブックマーク - スケールアウトからスケールアップへの回帰:江島健太郎 / Kenn’s Clairvoyance - CNET Japan
http://b.hatena.ne.jp/entry/japan.cnet.com/blog/kenn/2010/01/12/entry_27036420/

はてなブックマーク - ウェブアプリケーションサーバを複数台構成とか2010年代には流行らない - kazuhoのメモ置き場
http://b.hatena.ne.jp/entry/d.hatena.ne.jp/kazuhooku/20091226/1261838127

ベニヤ板から見たスケールアウトの方向性 - ITレガシー
http://blog.goo.ne.jp/hsato/e/fadb6c13b2274e5194129f85093dfbbb
http://www.atmarkit.co.jp/news/201007/21/pixiv.html

第2回 Hadoopがスケール・アウトする仕組み | Think IT
http://thinkit.co.jp/story/2010/06/11/1608?page=0,2
0029nobodyさん2012/02/20(月) 00:49:31.10ID:???
>>18-28
コテ付けてくれんかね
そうすりゃまとめてあぼーんできるんだが
0030nobodyさん2012/02/20(月) 01:12:41.37ID:6FydgI4G
Railsプログラマが知っておくべき97のこと
http://doruby.kbmj.com/tips4tips/20101217/Rails_97_

19 Rails Tricks Most Rails Coders Don't Know
http://www.rubyinside.com/19-rails-tricks-most-rails-coders-dont-know-131.html

21 Ruby Tricks You Should Be Using In Your Own Code
http://www.rubyinside.com/21-ruby-tricks-902.html

http://rails-bestpractices.com/
https://github.com/railsbp/rails_best_practices

Pluginが広げるRailsの魅力 ? SlideShare (share powerpoint presentations online, slideshows, slide shows, ...
http://www.slideshare.net/dara/pluginrails
0031nobodyさん2012/02/20(月) 09:58:16.38ID:???
うぜぇ…
0032nobodyさん2012/02/20(月) 14:01:51.36ID:???
まとめサイトでも作ったら良いんじゃないかな
0033nobodyさん2012/02/20(月) 15:41:39.38ID:???
こないだ worker と phone でどうにかしようとしてた人、mixiで女のフリして同じ質問しててワロタ
マイミクほぼ居ないステ垢でエロコミュ入ってるだけという
釣られたおっさんが適当な回答しとる
0034nobodyさん2012/02/21(火) 00:39:00.08ID:???
>>32
多分botで荒そうとしてるんでしょ
Railsと関係のあるリンクだから荒らし削除もできないという前提でやってると思われ
0035nobodyさん2012/02/21(火) 00:41:38.43ID:???
ところで3.2は使ってますか?explainが地味に便利
0036nobodyさん2012/02/21(火) 04:12:37.23ID:???
超高速? SIMが3枚?! IIJのモバイル通信サービスを試してみた
http://b.hatena.ne.jp/articles/201202/7633

面白いw

0037nobodyさん2012/02/21(火) 04:13:27.51ID:???
ごめんスレ間違った
0038nobodyさん2012/02/21(火) 15:57:58.18ID:???
上のリンク俺はけっこう為になったんだけど
テンプレみたいな感じじゃないの?
0039nobodyさん2012/02/21(火) 20:46:31.08ID:k/ouQHFp
Twitterのトラブルから見る、DB分割でスケーラブルなRailsサイト構築:TKMR.blog.show
http://blog.tkmr.org/tatsuya/show/311-twitter-db-rails

Magic Multi-Connections: A “facility in Rails to talk to more than one database at a time”
http://drnicwilliams.com/2007/04/12/magic-multi-connections-a-facility-in-rails-to-talk-to-more-than-one-database-at-a-time/

ActsAsReadonlyable
http://revolutiononrails.blogspot.com/2007/04/plugin-release-actsasreadonlyable.html

https://github.com/masarakki/acts_as_multi_connection
https://github.com/tchandy/octopus
https://github.com/kovyrin/db-charmer
https://github.com/mperham/data_fabric
https://www.ruby-toolbox.com/categories/Active_Record_Sharding
0040nobodyさん2012/02/21(火) 20:54:03.29ID:k/ouQHFp
acts_as_readonlyable
http://revolutiononrails.blogspot.com/2007/04/plugin-release-actsasreadonlyable.html

http://drnicwilliams.com/2007/04/12/magic-multi-connections-a-facility-in-rails-to-talk-to-more-than-one-database-at-a-time/

octopus
Database Sharding for ActiveRecord
https://github.com/tchandy/octopus

User.where(:name => "Thiago").limit(3).using(:slave_one)

Octopus.using(:slave_two) do
User.create(:name => "Mike")
end
0041nobodyさん2012/02/21(火) 21:05:45.03ID:k/ouQHFp
Database sharding and Rails - Stack Overflow
http://stackoverflow.com/questions/44145/database-sharding-and-rails

https://github.com/technoweenie/masochism
https://github.com/minhnghivn/my_replication

0042その12012/02/21(火) 22:08:22.33ID:???
質問です。

Owner と Car というモデルをOwner has one Car といった形式で繋いであります。
そしてOwner の入力フォームで下記のようにCarのnameカラムの情報を表示させ「未入力」のまま
フォーム内容をOwnerの【createアクション】へSubmitすると、
「 undefined method `name' for nil:NilClass 」 のようにエラーになってしまいます。
nameカラムに何か入力されている場合は Ownerへの新規レコードも Carへの新規レコードも作成されます。
上記エラーが発生しなくなるようにすればどのようにコーディングすればいいでしょうか?
長くなるため2レスに分けます。長文になり申し訳ありません。
0043その22012/02/21(火) 22:09:29.74ID:???
-----views/owners/_form.html.erb-----------------------------------------------------------
 <%= form_for(@owner) do |f| %>
  <div class="field">
   <%= f.label :owner_name %><br />
   <%= f.text_field :owner_name %>
  </div>
  <div class="field">
   <%= f.label :car %><br />
   <%= f.fields_for :car_attributes, @owner.car do |car| %>
    <%= car.text_field :name %>
   <% end %>
  </div>
  <div class="actions">
   <%= f.submit %>
  </div>
 <% end %>
0044その32012/02/21(火) 22:10:16.13ID:???
申し訳ございません。3レス分になってしまいました。

-----controllers/owners_controller.rb-----------------------------------------------------------
〜省略〜
 def create
  if params[:owner][:car_attributes][:name].blank?
   params[:owner].delete(:car_attributes)
  end

  @owner = owner.new(params[:owner])

  respond_to do |format|
   if @owner.save
    format.html { redirect_to @owner, notice: 'owner was successfully created.' }
    format.json { render json: @owner, status: :created, location: @owner }
   else
    format.html { render action: "new" }
    format.json { render json: @owner.errors, status: :unprocessable_entity }
   end
  end
 end
0045nobodyさん2012/02/21(火) 23:10:42.00ID:???
こないだの人と同じか。
そのやり方はいろいろおかしいけど、
エラーだけでいうとshowのviewが間違ってる。
0046nobodyさん2012/02/21(火) 23:37:49.17ID:???
>>45
ここにはshowではなくcreateのviewしか載せていないんですが、
どういうことですか?
0047nobodyさん2012/02/21(火) 23:50:40.21ID:???
>>45
ご指摘いただいているとおりのようです。
showで該当箇所( <%= @Owner.car.name %>)を消してcreateを実行した場合、
すんなりとレコードなど作成されてshowのviewに遷移してますね。

ただしアソシエート先の関連レコードのnameカラムがnullだと
「 undefined method `name' for nil:NilClass 」 のようにエラーになっているようです。
nullの場合はエラーが出るもんなんでしょうか?
認識としては空データなので、そのまま「データなし(空白)」で表示されるイメージなんですが・・・

エラーを回避したい場合、Viewでの上記コードはどのように記述するべきでしょうか?

0048nobodyさん2012/02/21(火) 23:52:39.03ID:???
載せてなくてもエラー見れば分かる。
0049nobodyさん2012/02/21(火) 23:56:53.39ID:???
それは消し方間違ってる。
HTMLのコメントアウトでは消えない。
あと、owner.car が nil だから nil.name が無いと言われてる。
あとは自分で試行錯誤して。
0050nobodyさん2012/02/21(火) 23:58:13.92ID:???
エラーで、カラムがnilになっているとのことなので、
下記のように関連レコードに何かデータが入っているときだけ
表示しなさいと記述してもエラーになります。

<p>
 <b>name:</b>
<% if @owner.car.name.blank? == false then %>
 <%= @owner.car.name %>
<% end %>
</p>
0051nobodyさん2012/02/22(水) 00:02:07.33ID:???
下記の方法で出来ました(スマートなやり方かどうか分かりませんが・・・)
皆様ありがとうございました。

<p>
 <b>name:</b>
<% if @owner.car.nil? == false then %>
 <%= @owner.car.name %>
<% end %>
</p>
0052nobodyさん2012/02/22(水) 00:02:59.22ID:???
だからカラムじゃ無いって言ってるだろ…。
0053nobodyさん2012/02/22(水) 00:06:54.30ID:???
>>52
nilというのはレコード自体(カラムのデータ内容ではなく)が無いという意味なんですね。
アソシエート先のレコードがあるか、無いか分からない場合は
毎回>>51のような表記をしないとエラーになりますよね??

該当関連レコードが存在しない場合でもエラーを出さず
かつ、存在した場合はその該当カラムを表示させるスマートな書き方ってありますか?
0054nobodyさん2012/02/22(水) 00:16:37.73ID:???
RoRってCakePHPみたいにバリデーションチェックってデフォで簡単にできる?
0055nobodyさん2012/02/22(水) 00:56:22.90ID:???
おう
0056nobodyさん2012/02/22(水) 01:23:36.24ID:VkxQAe77

「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
0057nobodyさん2012/02/22(水) 05:27:51.98ID:???
Pageキャッシュの生成を動的に決める事はできませんか?

一定条件を満たしたら以後そのページはページキャッシュ化
ということをしたいのですが

:page_cache hoge
という形だとその条件を満たすまで毎回hoge.htmlを削除し続けなければならないので現実的ではありません……
0058nobodyさん2012/02/22(水) 08:07:31.75ID:???
>>51
それを自分でやらないといつまでも人に聞かなきゃいけなくなる。

まず ruby から勉強したら?

nil? の戻り値を false と比較なんてしないし、then は書かない。
そもそも nil は偽。
if は後置もできる。

<%= owner.car.name if owner.car %>

■ このスレッドは過去ログ倉庫に格納されています