【RoR】Ruby on Rails Part12
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん
2011/07/19(火) 13:44:46.30ID:zxrusyvr【Ruby】Ruby on Rails Part11
http://hibari.2ch.net/test/read.cgi/php/1292032736/
■参考サイト
<英語>
本家: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/
0871nobodyさん
2011/10/12(水) 23:07:30.80ID:???http://mogok.jp/
https://www.fluxflex.com/
http://www.heroku.com/
http://cloudfoundry.com/
https://www.dotcloud.com/
http://www.engineyard.com/
http://www.slicehost.com/
http://www.rackspace.com/
http://www.linode.com/
0872nobodyさん
2011/10/12(水) 23:26:45.63ID:pwKBBJlW3.1ならな。
0873nobodyさん
2011/10/13(木) 01:41:20.80ID:???後はAWSなどのクラウドがいいな
自分の好き放題できるし
もちろん、自由には責任がついてくるのは実社会と変わらないが
0874nobodyさん
2011/10/13(木) 06:45:34.95ID:???http://diary.overlasting.net/2007-12-31-2.html
Fusion 3 に既存PCを移行: 紅姫竜胆
http://exacum-affine.cocolog-nifty.com/blog/2011/03/vmware-fusion-3.html
0875nobodyさん
2011/10/13(木) 18:33:49.37ID:???http://www.gizmodo.jp/2011/10/11_3.html
0876nobodyさん
2011/10/13(木) 18:42:57.55ID:???http://oodakedo.com/d/768864/
0878nobodyさん
2011/10/14(金) 19:27:25.54ID:???http://www.amazon.co.jp/gp/product/4774148318
特集1 詳解Rails 3 ── 新機能から、内部構造、チュートリアル、移行方法まで
http://www.amazon.co.jp/gp/product/4774143243
0879nobodyさん
2011/10/15(土) 07:08:12.63ID:???http://www.epsilon.jp/service/paypal.html
0880nobodyさん
2011/10/16(日) 04:59:24.66ID:???http://herocutter.heroku.com/
https://github.com/edavis10/heroku_s3_backup
https://github.com/ddollar/heroku-autoscale
https://rubygems.org/gems/heroku-resque-auto-scale
https://www.heroscale.com/
http://hirefireapp.com/
https://github.com/pcapr/dyno-blitzer
https://github.com/ddollar/heroku_backup_task
https://github.com/ddollar/heroku-accounts
https://github.com/ddollar/heroku-sql-console
0881nobodyさん
2011/10/16(日) 05:03:23.51ID:???http://journal.sooey.com/162
Automating Heroku PG Backups @MetaSkills.net
http://metaskills.net/2011/01/03/automating-heroku-pg-backups/
Auto-scale Your Resque Workers On Heroku | Verbose Logging
http://verboselogging.com/2010/07/30/auto-scale-your-resque-workers-on-heroku
Automated Heroku Database Backups to Amazon S3, Rackspace Cloud Files, or Google Storage - Jack Chu
http://jackchu.com/automated-heroku-database-backups-to-s3
0882nobodyさん
2011/10/16(日) 05:09:43.64ID:???Herokuで定期バックアップを無料で簡単に取得する方法 - スモールスタート
http://blog.mat-aki.net/heroku-easy-free-daily-backup
HerokuでDBのデータを自動でバックアップする - アインシュタインの電話番号?
http://d.hatena.ne.jp/ruedap/20110224/ruby_heroku_database_postgresql_auto_backup_gem_cron
herokuでデータベースのバックアップ(pgbackups)を自動化する - nabehiro Try and Error
http://d.hatena.ne.jp/nabehiro/20110126/1296060550
heroku の db バックアップ周り
http://www.hsbt.org/diary/20110112.html#p01
Sooey - HerokuにPG Backupsというアドオンが加わり、H...
http://journal.sooey.com/29
0883nobodyさん
2011/10/16(日) 07:00:33.55ID:???http://herocutter.heroku.com/plugins/17
0884nobodyさん
2011/10/16(日) 07:21:57.13ID:???https://github.com/hone/heroku-sendgrid-stats
bkuhlmann/heroku_plus - GitHub
https://github.com/bkuhlmann/heroku_plus
0885nobodyさん
2011/10/17(月) 05:28:04.95ID:???https://addons.mozilla.org/ja/firefox/addon/sqlite-manager/
0886nobodyさん
2011/10/21(金) 03:38:11.63ID:xMCE8FuRhttp://www.nikkei.com/tech/news/article/g=96958A9C93819696E0E2E298858DE0E2E3E2E0E2E3E38698E0E2E2E2;da=96958A88889DE2E0E2E5EAE5E5E2E3E7E3E0E0E2E2EBE2E2E2E2E2E2
クックパッドも楽天レシピも古く思える「Foodily」という新しいレシピサイト
http://hiromikubota.tumblr.com/post/3105912846/foodily
結局クックパッドは楽天レシピに抜かれる弱肉強食WEB - invizi
http://invizi.net/subject:58
0887nobodyさん
2011/10/21(金) 08:15:46.52ID:???0888nobodyさん
2011/10/21(金) 09:09:10.12ID:OzRHPw760889nobodyさん
2011/10/21(金) 09:38:11.34ID:???:condition書いたりブロック渡したりするけど、
そこに中間テーブルに書いたscope渡せないのかな。
同じ条件を左右と真ん中に書くの嫌なんだけど。
0892nobodyさん
2011/10/21(金) 17:25:54.01ID:???0893nobodyさん
2011/10/22(土) 12:34:35.20ID:x4TX45Mm通常はentriesはcreated_at降順で並べたいのですが、
blogs.status=1の時のみ、created_at昇順で並べたい、という要件があります。
素直に実装すると、entriesを表示する全ての箇所で、
if entries.blog.status = 1
entries.order('created_at DESC').each {}
else
entries.order('created_at').each {}
end
のようなコードになります。
これが結構煩わしいので、場合分けしなくてもよい方法を探しています。
entryモデルの中でscopeを定義しようとしても、
scope定義の中からblogを参照する術が無いし、
blogモデルのhas_many :entries, :orderで指定しようとしても、やはりblog.statusを参照する術がありません。
何か良い方法は無いでしょうか。
0894nobodyさん
2011/10/22(土) 12:48:52.13ID:???if blog.status == 1
blog.entries.order() # order A
else
blog.entries.order() # order B
end
みたいにすれば良いのでは。
scope 使うならjoinして中で判別したら良いし
0895893
2011/10/22(土) 13:20:08.08ID:x4TX45Mmありがとうございます!こんなに早くレスを頂けるとは。。
すいません。コードの方は単純な間違いです。
いずれにしても場合分けが毎回発生するのが問題でした。
そしてscopeにjoinが使えることを初めて知りました。
これで解決できそうです。ありがとうございました。
0896nobodyさん
2011/10/22(土) 15:55:55.18ID:???http://***.com/歴代の総理大臣
というように日本語が含まれたURLを作る場合に、
map.connect "歴代の総理大臣"
と記述して動くサーバーと、
map.connect "%E6%AD%B4%E4%BB%A3%E3%81%AE%E7%B7%8F%E7%90%86%E5%A4%A7%E8%87%A3"
とエンコードしないと動かないサーバーがあります
この辺の挙動の違いはおそらくRailsの問題ではなくてサーバー側の設定だとは思うのですが、何かアドバイスいただけると幸いです
使っているサーバーはCentOSやローカルのMacだったりとバラバラです
0897nobodyさん
2011/10/22(土) 17:15:23.46ID:???0900896
2011/10/22(土) 20:49:54.37ID:???>>897
今までは非エンコードとエンコードの両方をroutes.rbに記述して対応していました
そうすることで開発用ローカル(エンコードのみ動く)と実機サーバー(非エンコードのみ動く)の両方で同じroutes.rbを使えたからです
ただ、最近借りた海外VPSでは非エンコードとエンコードのどちらも全く受け付けないので、根本的な解決を図ろうと質問しました
0901nobodyさん
2011/10/23(日) 14:04:51.81ID:???ubuntu 11.10
ruby 1.9.1
gem --version
Invalid gemspec in [/var/lib/gems/1.8/specifications/json-1.6.1.gemspec]: invalid date format in specification: "2011-09-18 00:00:00.000000000Z"
Invalid gemspec in [/var/lib/gems/1.8/specifications/tilt-1.3.3.gemspec]: invalid date format in specification: "2011-08-25 00:00:00.000000000Z"
とエラーがでるのですが、、、
どうしてでしょうか?
0902nobodyさん
2011/10/23(日) 15:50:11.34ID:FKiWFVH20903nobodyさん
2011/10/23(日) 16:01:51.71ID:FKiWFVH2rubygemsが利用する、ruby付属のYAMLパーサの問題のようなので、
お仕着せ環境で回避するには、該当specificationの日付を直接修
正してしまう(時間パートを丸ごと削除)というのがぐぐるといっぱい出
てくる。
0904896
2011/10/24(月) 17:34:01.20ID:???例えば「あ」という日本語URLをroutes.rb内でデコードする際に、
「%e3%81%82」になる環境と「%E3%81%82」 になる環境があるようです(大文字or小文字)
ruby/rails/passengerのバージョンを全く同じバージョンにして複数の環境で試してみたところ、
CentOS 5.5環境では大文字に、CentOS 6では小文字になりました
何が原因なのかは結局わかりませんが一応自己解決しました
0905nobodyさん
2011/10/25(火) 12:15:29.24ID:???Usersテーブル(id, name)
Messagesテーブル(user_id, from_id, body)
があるとして簡易メッセージ機能を実装したいとします。
その際にリレーションを張るとしたら、
Messageテーブルから見たとき
user_idが送信宛先ユーザーのid、
from_idが送信元(送信者)のidとして
それぞれどのようにモデルには記述すべきでしょうか?
どちらも同じUsersテーブルにリレーションを張ることになります。
通常であれば テーブル名の単数形_idのフィールドを用意するのでしょうが
この場合は
送信宛先、送信元ともにUsersテーブルなので重複してしまいます。
0906nobodyさん
2011/10/25(火) 14:15:16.47ID:???0908nobodyさん
2011/10/25(火) 15:09:22.88ID:???class Message < ActiveRecord::Base
belongs_to :user
belongs_to :from, :class_name => 'User'
end
0910nobodyさん
2011/10/25(火) 18:56:31.32ID:???0912nobodyさん
2011/10/25(火) 20:37:49.79ID:8ijHAbC2自己参照結合
0914nobodyさん
2011/10/26(水) 04:03:35.48ID:V3wQJwQnhttp://wiki.usagee.co.jp/ruby/rails/RailsGuidesをゆっくり和訳してみたよ/Active%20Record%20Associations
自己結合(Self Joins)
0916nobodyさん
2011/10/26(水) 14:12:59.28ID:???以下のようなモデルを作るとします。
$ rails g scaffold Product name:string price:float url:string
$ rake db:migrate
そして、Productモデルクラスでinitializeメソッドを追加します。
class Product < ActiveRecord::Base
def initialize
@foo = 1
end
end
そうすると、scaffoldの画面で新しいProductオブジェクトを作ろうと「New Products」リンクをクリックすると、
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]
というようなエラーが出てしまいます。
ちなみにinitializeメソッドをコメントアウトすると治ります。
どうしてinitializeメソッドを追加するとこうなってしまうのでしょうか?
0917nobodyさん
2011/10/26(水) 14:14:26.05ID:???initialize メソッドは Product.new のときに呼ばれるメソッドなので、
それを上書きしちゃったらダメ
0919nobodyさん
2011/10/26(水) 14:42:11.71ID:???どこに疑問に思う余地があるんだよ
0920nobodyさん
2011/10/26(水) 20:50:00.49ID:NrqfyF3vことになるだろうし、AR::Baseのサブクラスなら after_initialize や after_find
というコールバックがあるな。
0921nobodyさん
2011/10/27(木) 06:29:21.47ID:???コンストラクタはinitializeです、ここで初期化しますってのをRubyの本で読んだ後に、ARでそれやったら動かないみたいなもんだから。
0922nobodyさん
2011/10/27(木) 10:03:32.64ID:???ごまかせる話ではないような
さすがに継承も知らん、という状態だとコードはほとんど書けないだろうし
0923nobodyさん
2011/10/28(金) 11:37:16.96ID:???SNSサイト
25テーブル 150カラム
遷移ページ 30
サーバー構築手数料こみこみ(ハードウェア代は抜きとして)
でいくらくらいが妥当かな?
0924nobodyさん
2011/10/28(金) 11:49:56.41ID:???0925nobodyさん
2011/10/28(金) 12:06:20.25ID:???0926nobodyさん
2011/10/28(金) 12:10:48.16ID:???作業範囲、サービス品質などによってピンキリ
というか、そんなざっくり論を展開するような顧客の案件はどこも請けてくれない
要はビジネスに向いてないってことだ
0927nobodyさん
2011/10/28(金) 12:13:36.16ID:???こんなとこで聞かないで、素直に開発会社に話持ってって見積頼めばええやん
0928nobodyさん
2011/10/28(金) 12:48:11.59ID:???0929nobodyさん
2011/10/28(金) 12:56:24.53ID:???まともな開発会社が分からないなら人脈使って探せ
人脈もないならビジネス失敗は確定だからさっさと手を引け
0932nobodyさん
2011/10/28(金) 13:19:04.29ID:???学生バイトに頼むなら分からんでもないが
0933nobodyさん
2011/10/28(金) 14:31:41.71ID:F7F0tBhsGrouptube (グループチューブ) ソーシャルネットワーキングサイトのASPサービス
http://grouptube.jp/
月額たったの840円!
http://sample.grouptube.jp/
0934nobodyさん
2011/10/28(金) 14:38:28.27ID:???http://gigazine.net/news/20110408_facebook_opencompute/
Facebook、ユーザー数が8億人を突破したと発表 - ITmedia ニュース
http://www.itmedia.co.jp/news/articles/1109/26/news030.html
月間アクティブユーザー数3.8億人(Inside Facebook 2/1)
サーバ台数6万〜10万台(推定)
1秒5000万リクエスト。
http://www.slideshare.net/naoto111/facebook-4732201
0935nobodyさん
2011/10/28(金) 21:31:22.08ID:???.htaccess 書き換え以外に rails で完結する方法はありませんでしょうか?
0936nobodyさん
2011/10/28(金) 21:55:14.23ID:???ほんとはApacheの設定とかで飛ばした方が良いけど。
0937nobodyさん
2011/10/28(金) 22:21:48.09ID:???ありがとうございます。
routes 書き換えは routes.rb をそのまま置き換え/書き換えという認識であっていますでしょうか?
0938nobodyさん
2011/10/28(金) 23:17:39.62ID:???0939nobodyさん
2011/10/29(土) 12:46:03.56ID:???�@ユーザー情報のメインテーブル(Mains)
�Aユーザー情報のサブテーブル(Subs)
�Bユーザーの投稿ポストテーブル(Posts)
の3つがあるとして
�Aサブテーブル(Subs)のNameカラムにユーザー名が格納。
その場合 Subsのmain_idがMainsのidに繋がって
モデルは↓
Mains has_one Subs
Subs belongs_to Mains
になると思うんだけど
Postsからユーザー名(�ASubsのName)を引っ張り出すときは
Postsのsub_idとSubsのidを繋げばいいですか?
それとも
Postsのsub_idとSubsのmain_idを繋ぐべき?
結局のところ
Subsの id = main_id
だから、どちらでもいいんだろうけど
どういった作り方が普通なのか気になります。
0940nobodyさん
2011/10/29(土) 13:25:01.65ID:???ショートカットという意味でPostにsub_id持つのは構わないけど、あまりやらないかな。
Postにはmain_id持たせてるから、そこから辿る。それだとこんな感じ。
Post.where(なんちゃら).includes(main: :sub)
で、個々のpostから名前をviewとかで引くなら、
post.main.sub.name
みたいになって長いから、Mainで:nameをdelegateする。
delegate :name, to: :sub
そうすると
post.main.name
と書ける。
もっと短くしたければ、またdelegateするなりメソッド足して工夫して。
上とは別に、省エネするなら、Postにattr_accessor で:name 足して、find_by_sql なりで引いて来る。この場合はincludes()しなくて良くなる。
post.name
使えるはず。
0941nobodyさん
2011/10/29(土) 13:28:05.54ID:???0945nobodyさん
2011/10/29(土) 14:27:29.35ID:???ここはRails全般のスレ。
質問に回答するもしないも見ている人達次第。
そいつは誰にも相手にされてないようだし、
罵倒するレスしかつけられない生産性のない可哀想な存在だから
相手にしないほうがいい。
0946nobodyさん
2011/10/29(土) 15:26:02.35ID:???↑これを参考に作ってます。
(実際はRails 3.1.1を使用。)
Users has_many Postsな状態で、
/users/123/posts/456
を
/user/hiroyuki/2011-10-29
みたいにしたいと思ってます。
match 'user/:user_name/:year-:month-:date' => 'posts#show'
routes.rbとかをがっつりいじればいくらでもできそうだけれど、
もっとスマートなやり方ありませんか?
0947nobodyさん
2011/10/29(土) 15:36:34.58ID:???0950nobodyさん
2011/10/29(土) 16:58:34.89ID:???routes.rb はがっつりいじるもの
何でも resources でやろうとするのは何でも scaffold でやろうとするようなもん
0951nobodyさん
2011/10/29(土) 17:43:50.36ID:???仮に resources などで簡潔に書きたいと思ってるなら、Rails の敷いたレールの上を
走るようにすればいい
今回のようにURL設計でレールから外れようとしているのに、それでも簡潔さを求める
のはRailsの根本思想からはありえないことです
ある意味、Railsは宗教です
DB設計にせよURL設計にせよMVCにせよ、「こうするべき」という教義を持っており、
教義に従う人にだけメリットを与えます
そこから外れたいなら相応の労力が必要なことに文句を言ってはいけません
0952nobodyさん
2011/10/29(土) 18:06:24.81ID:I8tdw7a20953nobodyさん
2011/10/29(土) 18:10:32.06ID:???0954nobodyさん
2011/10/29(土) 20:18:28.00ID:???横だけど、なんだか色々合点がいった。
ちょっと外れようとすると色々面倒なのはある意味じゃ仕様なんですね。
大したこだわりじゃないなら素直にレールに乗ってたほうが結果的に得しそうだ。
0955946
2011/10/30(日) 02:00:21.85ID:???いろいろありまして。
>>948
お元気そうで何よりです。
>>950
なるほど。
scaffoldはだいたい目に見えるからいじりやすいんですが、
routesの方は見えないところで動いてる部分が多くて。
0956946
2011/10/30(日) 02:02:32.00ID:???すごいわかりやすい!
すると、今回の場合は自分で自分用のrailを敷き直す覚悟が必要そうですね……。
サンスコ、頑張ってみまする。
>>952
おお、to_paramよさそうですね。
validates_format_ofと組み合わせて使おうと思います。
0957nobodyさん
2011/10/30(日) 10:18:03.46ID:???分からなければ従っておいた方がいい。
0958nobodyさん
2011/10/30(日) 22:29:28.09ID:???> routesの方は見えないところで動いてる部分が多くて。
だったらテストをしっかり書こうよ
>>956
> すると、今回の場合は自分で自分用のrailを敷き直す覚悟が必要そうですね……。
そんな覚悟を固めるより、設計に口出す方が楽だよ
少なくともRails開発者が押し付ける教義は非常に多くの優秀な人たちののレビューを
通ってきているわけだから妥当性は相応に強い
0959nobodyさん
2011/10/31(月) 00:58:32.76ID:???0960nobodyさん
2011/10/31(月) 18:03:43.50ID:???dejan/auto_html - GitHub
https://github.com/dejan/auto_html
auto_link("Go to http://www.rubyonrails.org and say hello to [email protected]")
# => "Go to <a href=\"http://www.rubyonrails.org\">http://www.rubyonrails.org</a> and
# say hello to <a href=\"mailto:[email protected]\">[email protected]</a>"
http://apidock.com/rails/ActionView/Helpers/TextHelper/auto_link
0961946
2011/11/01(火) 03:34:44.77ID:???趣味で作ってるだけなので、設計者=実装者です。
とりあえずrailに乗っかった形で一度完成させてから、あれこれいじる事にしました。
0962nobodyさん
2011/11/01(火) 12:03:31.55ID:???それにjsファイルの中でerbを使うとかうぜぇ!
0963nobodyさん
2011/11/01(火) 12:05:00.39ID:???0964nobodyさん
2011/11/01(火) 12:14:37.64ID:???ロックがかかっていなければ更新処理→検索処理、
かかっている場合は更新が終わるのをまって(そして自身の更新はスキップして)検索処理としたいのですが、
ロックがかかっているかどうか調べるにはどうしたらよいのでしょうか?
if ( ロック中か?) do
# ロック解除されるまで待つ/更新処理はしない
LockTable.find(1, lock => true).lock! false
else
locked = LockTable.find(1, :lock => true)
# 幾つかのモデルにまたがる更新処理....
locked.lock! false
end
# モデル内容の検索処理...
0965nobodyさん
2011/11/01(火) 14:15:30.60ID:???.js は省けた気がする
あとerbにするのは確かにうぜえので変数的なものは
headタグ埋め込んで参照するようにしてるわ。
0966nobodyさん
2011/11/01(火) 15:25:40.80ID:???単に負荷で遅くなっているか等を識別する手段は無かったと思う(DBレベルで)。
ただ、Oracleなんかは 読取lockの待ち時間を設定できて、
その時間を超えた場合は、例外を戻すように出来るので、
それをRails側でキャッチしてゴニョゴニョすることは出来るかも。
for update nowait なら、全く待たずに例外投げられるので
それを利用して、ロック中である、と識別させる手もある。
lock("for update nowait") と書けばいい。
ただMySQLは、v4系列までは読取lockの待ち時間は設定できないし、
nowaitオプションもなかった気がする。単にグローバルな「待ち時間」で
制御するしかないけど、これだとサーバが負荷のせいでレスポンス待ちなのか、
lockのせいなのか等の識別は出来ない。v5はどうだか分からない。
0967nobodyさん
2011/11/01(火) 15:58:03.53ID:???回答ありがとうございます。
なるほど、ここら辺はDB依存になる部分なんですね。
バックエンドがMySQLでして、グローバルなオプションの変更はちょっと影響範囲の判断がつかないので
今回は違う方法を考えてみます。
それほどクリティカルな処理の部分ではないのと、どちらにしろロック待ちはするということで
前回の更新処理時刻+n秒以内なら更新処理スキップみたいな感じでいこうと思います。
0969nobodyさん
2011/11/02(水) 01:28:27.52ID:???0970nobodyさん
2011/11/02(水) 08:38:04.18ID:???すぐ分かるんだな
レス数が950を超えています。1000を超えると書き込みができなくなります。