【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
0558nobodyさん
2014/06/29(日) 15:39:44.67ID:???User: has_many Communities, has_many Numbers
Community: belongs_to User, has_many Numbers
Number: belongs_to User, belongs_to Community
0560nobodyさん
2014/06/29(日) 16:03:58.70ID:???0561nobodyさん
2014/06/29(日) 16:05:05.56ID:???申し訳ない
User: 20,000レコード
Community:100レコード
Number:10,000レコード
ってんかんじで
DBはMySQL5.1.69です
0562nobodyさん
2014/06/29(日) 16:21:27.81ID:???inを使ってるのが問題だから
>>560が言うとおり、hmtを試してくれ
もう一つは、MySQL5.1.69じゃ遅いよ
0563nobodyさん
2014/06/29(日) 16:32:16.95ID:???hmtを試すとは?
それとMySQLのバージョン違いでそんなに遅いもんなんですか?
Rails3.2.11を利用しています
0565nobodyさん
2014/06/29(日) 16:50:28.46ID:???hmtだけでググりましたが
それだけだと抽象的な検索結果しか出てこなくて
何をどうhmtと紐づければいいか分かりません
0567nobodyさん
2014/06/29(日) 17:13:52.73ID:???ありがとう。
rails hmtでググっても今回の件に該当するようなページが出てきませんでした。
rails hmt inも試しましたが同様・・・
0568nobodyさん
2014/06/29(日) 17:15:44.15ID:???rails hmt でぐぐったんなら hmt とはなんぞや?が分かっただろう
だったら hmt を試すことはできるはずだ
分かってないのに言ってるなら今すぐ死ね
0569nobodyさん
2014/06/29(日) 17:18:02.95ID:FLtC2iyWhttp://www.techscore.com/blog/2012/12/25/rails%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E7%B4...
0570nobodyさん
2014/06/29(日) 17:18:39.11ID:FLtC2iyW0571nobodyさん
2014/06/29(日) 17:37:23.16ID:???http://qiita.com/kaiinui@github/items/dad6180f1910c6a4bfd5
Ruby - Railsが時代に合わなくなってきた - Qiita
http://qiita.com/kaiinui@github/items/2781219340d427543d08
0572nobodyさん
2014/06/29(日) 17:54:43.82ID:???Railsに触れるな
0573nobodyさん
2014/06/29(日) 19:22:12.06ID:???rails has_many throughでググるといいよ
0575nobodyさん
2014/06/29(日) 21:29:38.05ID:???なんでRailsにはこう言う変なのが多いのかね?
N+1問題とか、Rails使わなきゃ絶対遭遇しないだろ。糞ライブラリで馬鹿みたいに隠蔽してっからんなザマになんだよ。
ということでRails終了。
0576nobodyさん
2014/06/29(日) 21:31:02.84ID:???N+1問題はORM使ってたらどこにでも発生しうる問題
ActiveRecordに限った話でもなんでもない
ということで>>575はバカ
0577nobodyさん
2014/06/29(日) 21:33:21.79ID:???r: ライオンが
a: あくびをしたら
i: いい感じ
l: LDKが
s: サバンナ状態
h: ハッハッハと笑いが止まらん
m: またこいつだよ例の奴だよ
t: とっとと消えろ
0578nobodyさん
2014/06/29(日) 21:33:59.47ID:???0580nobodyさん
2014/06/29(日) 21:52:10.65ID:???0581nobodyさん
2014/06/29(日) 21:53:16.33ID:???ありがとうございます。hmtってhas_many throughの略だったんですね。。。。
ここでいうNumberテーブルは中間テーブルというわけではありません。
用途を具体的に言えば
User(会員)-Number(電話番号)-Community(携帯キャリア)
のようなかんじです
会員Aさん、Bさん、Cさんがいたとして
Aさんは ドコモ、ソフトバンクの携帯を所持。それぞれの番号(Number)が
090-1111-1111、090-2222-2222
Bさんは auとソフトバンクを所持。それぞれの番号(Number)が
090-3333-3333、090-4444-4444
Cさんは ドコモとauとソフトバンクを所持。それぞれの番号(Number)が
090-5555-5555、090-6666-6666、090-7777-7777
のようなかんじなので、どちらかというと
@numbers = @user.numbers(会員が持つ複数の電話番号一覧)だったり @numbers = @community.numbers(携帯キャリアごとの電話番号一覧) のような使い方をして
number(電話番号)をUserのshowページ)や、Communityのshowページで一覧して表示しています。
@communities = current_user.get_up_voted(Community)
ここでは @numbersを取得するので@numbers = @communities.codes.page(params[:page]).per(10)としても
「undefined method 'codes'」というエラーになりますね
0582nobodyさん
2014/06/29(日) 21:55:02.72ID:???> ありがとうございます。hmtってhas_many throughの略だったんですね。。。。
rails hmt でぐぐればそれぐらい一発で分かる話なんだが、こいつほんとにぐぐったのかね?
0583nobodyさん
2014/06/29(日) 22:03:21.92ID:???0584nobodyさん
2014/06/29(日) 22:50:31.90ID:???0590nobodyさん
2014/06/30(月) 07:20:11.22ID:???Google Apps Unscripted, March 14, 2014
https://www.youtube.com/watch?v=E1CzPtUKWkw
Apps Script Crash Course - Script Editor
https://www.youtube.com/watch?v=ezbH4IJynhU
Google I/O 2012 - Use What You Know: HTML and JavaScript in Apps Script
https://www.youtube.com/watch?v=tcl24asytos
Your First Script - Apps Script Tutorials
https://www.youtube.com/watch?v=Pgfbl_o9WvM
0592nobodyさん
2014/06/30(月) 08:46:11.40ID:???0593nobodyさん
2014/06/30(月) 08:50:39.79ID:???0595nobodyさん
2014/06/30(月) 11:13:18.26ID:???http://b.hatena.ne.jp/entry/e0166.blog89.fc2.com/blog-entry-1174.html
0596nobodyさん
2014/06/30(月) 12:17:09.64ID:STnXsq+30597nobodyさん
2014/06/30(月) 12:46:14.05ID:???0598nobodyさん
2014/06/30(月) 22:59:59.83ID:???@user = User.find(1)
みたいにActiveRecordを使うのは無理なんかな?
0599nobodyさん
2014/06/30(月) 23:02:37.59ID:???0600nobodyさん
2014/06/30(月) 23:38:51.22ID:???なんで
0601nobodyさん
2014/07/01(火) 01:08:38.25ID:nJV1b0sU0602nobodyさん
2014/07/01(火) 01:54:38.36ID:???0605nobodyさん
2014/07/01(火) 20:55:47.96ID:XzNxeXAuhas_namy through を使うと、>>558 は以下のようになるね
(>>558 の Community: belongs_to User は謎)
Users:
has_many Numbers
has_many Communities through Numbers
Communities:
has_many Numbers
has_many Users through Numbers
Numbers:
belongs_to Users
belongs_to Communitys
詳しくは以下のページの「2.4 The has_many :through Association」を参照
・Active Record Associations - Ruby on Rails Guides
http://guides.rubyonrails.org/association_basics.html
他にも様々な関連(アソシエーション)があるから、目的に合ったものを選ぶこと
で、Numbers の user_id と community_id にインデックスを設定すれば、
>>561 で示されたような(たかだか)数万件のデータ量であれば、
>>557 にあるような60秒の応答時間にはならないハズだけど....
もしも応答時間に変化が無ければ、Rails以外に問題があると思う
0606nobodyさん
2014/07/03(木) 01:04:37.84ID:???0607nobodyさん
2014/07/03(木) 01:09:59.72ID:???mysqlの問題だよ
5.6はわからんけど
5.5まではjoinとかサブクエリとかINとか使ったら遅くて使い物にならん
0608nobodyさん
2014/07/03(木) 01:22:03.64ID:???0609nobodyさん
2014/07/03(木) 21:27:15.30ID:lAObJFwKMySQL 5.5 のリリース開始が2011年頃で
しかも has_many through は
すでに Rails 1.0 で実装されていた
そんな3年前のありふれたソフト構成で、
たかが数万件の検索に数十秒を要する性能問題の原因が
MySQL にあるとは考えられない
0610nobodyさん
2014/07/03(木) 23:01:26.64ID:???0611nobodyさん
2014/07/03(木) 23:04:48.64ID:???0613nobodyさん
2014/07/04(金) 00:51:43.59ID:???0614nobodyさん
2014/07/04(金) 02:49:53.83ID:???0615nobodyさん
2014/07/04(金) 02:51:48.01ID:???0616nobodyさん
2014/07/04(金) 04:52:28.37ID:iiWE9XVihttp://b.hatena.ne.jp/entry/japan.zdnet.com/business-application/sp/35049207/
「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
0617nobodyさん
2014/07/04(金) 14:38:22.00ID:???0618nobodyさん
2014/07/05(土) 06:16:25.08ID:12HindV20619nobodyさん
2014/07/05(土) 10:38:39.82ID:???上の例に関しては適切にindex貼ってないだけだからrailsもmysqlも関係ないけどね
0620nobodyさん
2014/07/05(土) 10:43:54.42ID:???0621nobodyさん
2014/07/05(土) 12:17:16.21ID:???0622nobodyさん
2014/07/05(土) 13:19:44.90ID:???0623nobodyさん
2014/07/06(日) 01:31:33.21ID:???白蟻対策じゃなくて防蟻対策ということは、蟻側の視点で「どうやって防蟻剤を突破して家を食うのか?」ってこと?
0624nobodyさん
2014/07/06(日) 08:27:50.77ID:vvaN7WsGMooseのような新しい拡張を使ってはいるものの、この言語は柔軟性に欠けていると感じる。
レガシーコードのサポートを避けることはできないので、当分はサポートを続ける予定にしているが、
新たに開発するものに関しては、もっと現代的でWebアプリケーションに使われている言語を使いたいと思う。
フレームワークごと変えてしまってもいい。
http://developers.slashdot.jp/story/14/07/05/0819214/
0625nobodyさん
2014/07/06(日) 09:26:17.63ID:???http://internet.watch.impress.co.jp/docs/special/20120731_549042.html
0626nobodyさん
2014/07/06(日) 11:10:11.87ID:???変更前
数百台のデータベース
変更後
1/10の数十台に減りました
http://kaworu.jpn.org/kaworu/2013-01-23-1.php
0627nobodyさん
2014/07/06(日) 11:44:10.99ID:???0628nobodyさん
2014/07/06(日) 14:13:48.68ID:???0629nobodyさん
2014/07/06(日) 16:06:21.06ID:???http://yosuke-furukawa.hatenablog.com/entry/2014/07/06/094617
0630nobodyさん
2014/07/07(月) 06:18:26.99ID:???0631nobodyさん
2014/07/07(月) 19:40:39.69ID:???0632nobodyさん
2014/07/07(月) 21:32:29.54ID:???0633nobodyさん
2014/07/07(月) 21:42:16.11ID:???developmentモードではhttp://localhost:3000/admin/indexというルートを作りたいんです。
■route.rb
require 'subdomain/admin''
constraints Subdomain::Admin do
namespace :admin, path: Subdomain::Admin.path do
get 'index' => 'bar#index'
end
end
■lib/subdomain/admin.rb
module Subdomain
class Api
def self.matches?(request)
if Rails.env.production?
request.subdomain == "api"
else
request.subdomain.blank?
end
end
def self.path
"api" unless Rails.env.production?
end
end
end
この状態でRails_Env=developmentとRails_Env=productionつけてrake routesすると期待通りの結果になるのですが、
いざhttp://localhost:3000/api/indexにアクセスしたら「uninitialized constant Api」と出てきます…。
bar_controllerにApi::つけたり、app/controller/apiに配置したりしても駄目でした。
どうすればいいのでしょうか?
0634見にくいのでインデントつけました
2014/07/07(月) 21:44:27.53ID:???developmentモードではhttp://localhost:3000/admin/indexというルートを作りたいんです。
■route.rb
require 'subdomain/admin''
constraints Subdomain::Admin do
namespace :admin, path: Subdomain::Admin.path do
get 'index' => 'bar#index'
end
end
■lib/subdomain/admin.rb
module Subdomain
class Api
def self.matches?(request)
if Rails.env.production?
request.subdomain == "api"
else
request.subdomain.blank?
end
end
def self.path
"api" unless Rails.env.production?
end
end
end
この状態でRails_Env=developmentとRails_Env=productionつけてrake routesすると期待通りの結果になるのですが、
いざhttp://localhost:3000/api/indexにアクセスしたら「uninitialized constant Api」と出てきます…。
bar_controllerにApi::つけたり、app/controller/apiに配置したりしても駄目でした。
どうすればいいのでしょうか?
0635nobodyさん
2014/07/07(月) 22:35:18.31ID:???Rails は勝手に admin.rb を読んだりはしない
読むようにさせるには
・auto_load の仕組みが働くように規約に沿ったファイル名で規約に沿った位置に置く
・config/application.rb などで require で読む
のどちらか
0637nobodyさん
2014/07/08(火) 12:00:32.32ID:???0638nobodyさん
2014/07/08(火) 13:08:22.16ID:???0639nobodyさん
2014/07/08(火) 20:31:54.04ID:???http://www.ustream.tv/recorded/25419544
Enumerable#entries
http://ruby-doc.org/core-1.9.3/Enumerable.html
0640nobodyさん
2014/07/09(水) 00:42:40.56ID:HDQ993Cd部分テンプレートで複数のラベル群を作ると一意性がなくなって、混線しちゃいます。
label forで1,2,3,4とあって、input valueで1,2,3,4とあるとき、1setだったら良いのですが、
1,2,3,4のセットが複数出来る時、各自の中で動いてくれません。
各セットのlabel for やinput valueの1,2,3,4にたとえば投稿のIDなどをくっつけて、987-1,987-2などのようにしたいのですが、
その生成の仕方を知りません。ヘルパーメソッドとかではなく、自然体の書き方としてそういったやり方が用意されているなら知りたいです。
宜しくお願いします
0642nobodyさん
2014/07/09(水) 01:53:25.24ID:???天安門広場
文化大革命
0643nobodyさん
2014/07/09(水) 02:13:20.30ID:HDQ993Cdいやいや、私も道半ばの人間でして、ここで質問させてもらってるのです
でもついでにお役にたてるなら幸いですが
0644nobodyさん
2014/07/13(日) 20:52:54.97ID:???0645nobodyさん
2014/07/14(月) 09:03:57.62ID:???Rails3.2.18
text = "abcdefg"
text = text.html_safe
text = text.gsub(/cd(.+)/){
$1
}
puts text #=> ab
.html_safeした後にgsubすると$1の中身が空になるscanだとちゃんととれた
html_safeの順番を後に回すときちんと動く
text = "abcdefg"
text = text.gsub(/cd(.+)/){
$1
}
text = text.html_safe
puts text #=> abefg
0646nobodyさん
2014/07/14(月) 23:08:44.29ID:NZMg5fD+https://github.com/rails/rails/issues/1555 に出てた。
AS::SafeBufferはStringのサブクラスなので、ほとんどのメソッドは
Stringのそれと同様に動く。
一部の、文字列を加工して返すメソッド(gsubを含む)は、
#to_str で得られた文字列に実操作を委譲するようになっている。
(これにより、unsafeなStringが返る)
加工した結果がタグを含んでしまう可能性があるからだろうね。
で、 $1 はローカル変数なので、SafeBuffer#gsubのブロックと
移譲先のString#gsub内のそれは別物になってしまう。
バグというか、不便だけど言語上の制約と割り切るしかなさそう。
0647nobodyさん
2014/07/14(月) 23:36:06.76ID:???わざわざありがとうございます
言ってることはちっともわかりませんが直ることは無さそうということで諦めて違う方法考えます!
0648nobodyさん
2014/07/15(火) 03:57:15.59ID:lCP2M1NV0650nobodyさん
2014/07/15(火) 19:48:09.35ID:lCP2M1NV明らかに作ったことなさそうだね
君みたいなレべルの人間は黙ってていいよ
0651nobodyさん
2014/07/15(火) 20:05:39.19ID:???0652nobodyさん
2014/07/15(火) 20:08:38.56ID:lCP2M1NV君が教えれるレベルとも思わないし、私が君に教わるレベルでもないと思うよw
開発したことある人なら参考になるサイトを見ている可能性があるから、聞いてみたまでで、君のように開発したこともなく英語も読めなさそうな人には当てはまらない質問なんだけどね〜
まぁ頑張って生活してちょw
0654nobodyさん
2014/07/15(火) 21:53:43.32ID:???0656nobodyさん
2014/07/15(火) 22:24:25.17ID:???もっと貼ってくれ
0657nobodyさん
2014/07/15(火) 23:11:04.07ID:???■ このスレッドは過去ログ倉庫に格納されています