【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
0061nobodyさん
2013/02/09(土) 22:42:13.16ID:???かからないアクションはunicorn とかって出来ますか?
0062nobodyさん
2013/02/10(日) 00:32:59.71ID:???0063nobodyさん
2013/02/10(日) 01:34:02.48ID:???0064nobodyさん
2013/02/10(日) 10:06:29.96ID:???0065nobodyさん
2013/02/10(日) 11:11:56.80ID:???例えばapiを叩いてごにょごにょして出力とかだと時間がかかるので
unicornはそういうのには向いてませんよね。
なのでそれだけthinで出来ないのかなと思ったのでした。
0066nobodyさん
2013/02/10(日) 11:29:12.12ID:???コントローラー
@users = @post.users
@posts = Post.find_all_by_category(params[:category])
ビュー
<%= @users.count %>
<%= @posts.count %>
のようなカウンター値を全てのページで表示させる場合、
カウンターキャッシュを使う方が遙かに処理時間(負荷)は少なくて済みます?
それともどちらにせよ@usersや@postsとして
記事を引っ張り出して
それらを表示させているのであれば
カウンターキャッシュを使わず
.countとしても大して負荷はかからないから気にしなくてもいいですか?
カウンターキャッシュにしてもいいのですが
管理側でphpMyAdminからレコードを消したときに
カウンター値との誤差が出てくるので
できれば.countにしておきたいのですが
どうでしょう?
もしくは、createやdestroyのアクションの際に毎回集計をとりなおして
カラムに正しい集計値を格納してやるのも有りですか?
0067nobodyさん
2013/02/10(日) 11:53:06.52ID:???ロードしたオブジェクトの個数を返すよ
0068nobodyさん
2013/02/10(日) 12:15:33.74ID:???ありがたや、ありがたや
要するにviewで
<%= @users.length.to_s %>
とすればいいんですね
となるとカウンターキャッシュを使う利点って何になってくるんですか?
・全てのアソシエーションをdependant=>destroy
・webアプリ自体以外からのレコード削除を行わない!
これらを前提としたときだけ
カウンターキャッシュが有用だよ!ってことですか?
0069nobodyさん
2013/02/10(日) 12:18:33.72ID:???すみません。追加で質問です
コントローラー内でも
@posts = Post.find_all_by_category(params[:category])
@posts_count = @posts.count
これでも二回SQLが発行される
つまり遅い
したがって二行目は
@posts_count = @posts.length
のほうがいい!という認識で合ってますか?
0070nobodyさん
2013/02/10(日) 12:23:39.32ID:???includes(:posts)せずに
- @users.each do |user|
= user.posts_count
とか
0071nobodyさん
2013/02/10(日) 12:32:26.80ID:???パフォーマンス計測にはbulletとか newrelicがおすすめ。
mysql専用のもあったんだけど名前忘れた。
0074nobodyさん
2013/02/10(日) 20:31:40.28ID:???カウンターキャッシュに dependent: destroy は関係ないんじゃないかな
0075nobodyさん
2013/02/11(月) 12:02:52.87ID:???国によって時間の表示のさせ方を変えるのってどうすればいいですか?
0076nobodyさん
2013/02/11(月) 15:33:36.27ID:???0077nobodyさん
2013/02/11(月) 15:34:47.47ID:n5nNToTb0078nobodyさん
2013/02/11(月) 15:40:52.68ID:???>>77
ありがとう
i18nって変動する値には対応してないという認識なんだけど
言葉みたいな固定のものだけを
言語設定にあわせて表示してくれるかんじ
各国のユーザーが投稿しはじめたら
イギリスの標準時間に合わせて保存しておいて
表示させるときにどうにか計算させなおして
表示させるのかな?
仕組みが良く分からない
0079nobodyさん
2013/02/11(月) 16:22:57.02ID:???http://qiita.com/items/68341489a9c5149b815d
0080あ
2013/02/11(月) 18:25:58.92ID:???http://d.hatena.ne.jp/willnet/20100430/1272618929
http://www12.atpages.jp/~nekomike/blog/2010/05/11/rails-日付を国際化-表示/
0081あ
2013/02/12(火) 04:12:29.01ID:???http://weblog.rubyonrails.org/2013/2/11/SEC-ANN-Rails-3-2-12-3-1-11-and-2-3-17-have-been-released/
https://github.com/rails/rails/compare/v3.2.11...v3.2.12
0082nobodyさん
2013/02/12(火) 11:01:11.07ID:6eTPG0HRruby1.9 rails3.2です。
ActiveRecord::Base.configurations["working"]= {
:adapter => 'sqlite3',
#:database => ':memory:'
:database => DATABASE
}
module Working
ActiveRecord::Base.establish_connection "working"
class Dealer < ActiveRecord::Base
end
unless Dealer.table_exists?
ActiveRecord::Schema.define do
create_table "dealers" do |t|
t.column :no, :integer
...
t.column :capital, :integer
end
end
end
end
FROM
record = Working::Dealer.new
record.no, ... , record.capital = [num, ... , capital]
record.save!
Working::Dealer.connection.close
TO
FROMからTOのの部分がマルチスレッドで動きます。
データベースを実ファイルにしているときはエラーになりません。
0083nobodyさん
2013/02/12(火) 11:08:54.84ID:6eTPG0HRDEPRECATION WARNING: Database connections will not be closed automatically,
please close your database connection at the end of the thread by calling `close` on your
connection. For example: ActiveRecord::Base.connection.close
. (called from mon_synchronize at /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211)
/usr/local/rvm/gems/ruby-1.9.3-p194/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:
in `initialize': SQLite3::SQLException: no such table: dealers:
INSERT INTO "dealers" ("capital",...,"no") VALUES (?,..., ?) (ActiveRecord::StatementInvalid)
のエラーが出てしまいます。
これはデータベースへのアクセススピードが速すぎて,競合してしまっているのでしょうか?
レコードの追加のみなので,特にトランザクションやロックを考慮していないのが原因なのでしょうか?
ググっても手がかりがつかめなかったので,すみませんが教えてください。
0084nobodyさん
2013/02/12(火) 11:51:52.90ID:???0085nobodyさん
2013/02/12(火) 12:49:54.80ID:???エラー内容も読んでね。
008683
2013/02/12(火) 17:19:58.23ID:6eTPG0HR(connection.closeが呼ばれる前に,エラーでストップするからだけのよう?ウォーニングがでないときもある)
追尾のために
ActiveRecord::Base.connection_pool.with_connection do
print "pool, "
Working::Dealer.transaction do
print "transaction, "
record = Working::Dealer.new
print "new, "
record.lock!
print "lock, "
record.no,..., record.capital = [num,..., capital]
print "=, "
record.save!
p record
end
としたところ。(3つスレッドが作られて)
-- create_table("dealers")
-> 0.0182s
pool, pool, pool, transaction, transaction, transaction, new, new, new, lock, lock, =, lock, =, =
in `initialize': SQLite3::SQLException: no such table: dealers: INSERT INTO "dealers"...(ActiveRecord::StatementInvalid)
という結果でした。
テーブルが作られたにもかかわらず,`無い'というエラーなので、どうもわかりません。
もしかして,:memory:でやっているので,スレッドがメモリを食い尽くしてしまっているのでしょうか?
0087nobodyさん
2013/02/12(火) 23:00:08.94ID:IdZcVAQxhttp://rails-sqli.org/
0088nobodyさん
2013/02/13(水) 11:27:53.61ID:???Railsのメリットってなに?
CakePHPならレンタル鯖だろうが
ぶっこむだけで動き出すじゃん
しかも、鯖のメンテはホスティング会社が勝手にやってくれる
RailsはVPS以外では使えないし
そもそも一から必要なものをいろいろとSSHで入れていかなきゃダメ
かなりメンドイ
しかも、入れていくにしても
パッケージのバージョンの依存関係のせいでエラー勃発しまくり
まともな組み合わせを探せるまで
相当時間がかかる
時間が経てば旧バージョンを落とせなくなってたりもするし
そこまでしてなんでRailsを選ぶの?
何がそうさせる?
0089nobodyさん
2013/02/13(水) 11:28:44.91ID:???とくにgemを多用してたりすると
0090nobodyさん
2013/02/13(水) 13:04:59.79ID:???感覚的な問題だから、PHPのほうがいいという人もいるだろうし
そういう人はPHPを使ったほうがいいでしょう。
0092nobodyさん
2013/02/13(水) 17:06:13.31ID:???ftpでファイルをちょっと書き換えてアップとか
SSHが遅いんだけど、海外鯖だとこんなもんなのかな?
0093nobodyさん
2013/02/13(水) 18:47:01.03ID:???0095nobodyさん
2013/02/13(水) 21:39:34.56ID:???一日経つと「Rubyが本当に好き」になり、一週間経つと「PHPには戻れない」状況になりました。
http://capsctrl.que.jp/kdmsnr/wiki/transl/?AnInterviewWithDHH
DHH:極端なことを言うと,Rubyが一番美しく自分のコードが書けるからです。
DHH:PHPとJavaです。でも,どんなにリファクタしても綺麗なコードが書けなかった。
http://gihyo.jp/dev/serial/01/alpha-geek/0004
404 Blog Not Found:そろそろPHPに関して一言いっとくか
http://b.hatena.ne.jp/entry/blog.livedoor.jp/dankogai/archives/50835571.html
http://b.hatena.ne.jp/entry/blog.livedoor.jp/dankogai/archives/50993137.html
0096nobodyさん
2013/02/13(水) 21:40:10.01ID:pFcuxYSRhttp://gihyo.jp/dev/column/01/prog/2010/030801?page=2
RailsとCakePHPを比べたところ,高負荷時にはRails のほうが大幅に応答性能が高いという結果が出たことですね。
これは200リクエスト/秒くらいからPHPの応答性能が急激に下がるのが原因です。
Rubyはそれほど大きくはパフォーマンスが落ちないんです。
第4回 Railsに変えてよかった!:iKnow!の場合 | Think IT
http://thinkit.co.jp/article/156/4?page=0,1
3ヶ月、わずか3名程度のエンジニアチームで、彼らはPHPで実装が完了していたレベルに追いつきました。
またコード量はPHPの1/5以下にまで削減されており、よりシンプルな構成も実現できました。
0097nobodyさん
2013/02/13(水) 21:41:01.88ID:???「VBscriptならこの倍,PHPでも1.5倍はかかっていたのではないか」
コード量も10分の1になった。
http://itpro.nikkeibp.co.jp/article/OPINION/20071031/286028/
0098nobodyさん
2013/02/13(水) 22:39:37.17ID:pFcuxYSRhttps://twitter.com/Espen_Antonsen/status/299665397404274689
0099nobodyさん
2013/02/13(水) 23:34:24.94ID:???もしかしてwindowsで使ってるimagemagickのひと?
0100nobodyさん
2013/02/14(木) 05:20:58.50ID:XsxLpfIWhttp://news.ycombinator.com/item?id=5213862
Cloud 66 | Code to Cloud in 5 minutes
https://www.cloud66.com/
0101nobodyさん
2013/02/14(木) 05:28:46.90ID:???http://www.skeddly.com/
Ruby On Rails and PHP Cloud Hosting PaaS | Managed Rails Development
http://www.engineyard.co.jp/
0102nobodyさん
2013/02/14(木) 07:34:01.22ID:XsxLpfIW0103nobodyさん
2013/02/14(木) 07:45:28.88ID:XsxLpfIW0104nobodyさん
2013/02/14(木) 15:23:52.55ID:???アメリカのVPSサーバー
日本国内のドメイン管理会社を使った場合
アメリカ人が現地でアクセスするとき
若干速度は落ちますか?
対策としてドメインもアメリカの管理会社に任せるべきですか?
それとも、速度は変わらない?
0105nobodyさん
2013/02/14(木) 17:54:10.11ID:???http://internet.watch.impress.co.jp/docs/special/20120227_514853.html
0106nobodyさん
2013/02/14(木) 22:39:41.85ID:???最悪でも、名前解決の最初の一回だけ、ややレスポンスが遅くなるくらいだと思う
後はローカルや使ってるDNSキャッシュで解決するだろうし
0107nobodyさん
2013/02/15(金) 00:21:15.79ID:???ありがとうございます
気にすればいいのは
VPSサーバーだけですね
同じアメリカのサーバーでも
結構、日本からのpingの速さとかFTPの速度って差があるもんですか?
同じアメリカ内のサーバーなら
あまり変わらない?
0108あ
2013/02/15(金) 01:18:49.41ID:???実際には都市と都市をつないで、広い国土の中にまばらに小さいIX(インターネットエクスチェンジ)がたくさんある形になっているんです。
途中、遅い回線も平気であります。
http://www.sakura.ad.jp/casestudy/c05_dedicated_fluxflex.html
0109nobodyさん
2013/02/15(金) 04:56:57.15ID:???よくMMOとかでサーバーを東海岸か西海岸か選べたりするけど
0110nobodyさん
2013/02/15(金) 08:43:51.62ID:???AWSで西海岸と日本で作って試してみ
0111nobodyさん
2013/02/15(金) 08:58:54.58ID:8vTfrSUfttp://charlie.bz/blog/rails-3.2.10-remote-code-execution
0112nobodyさん
2013/02/15(金) 14:33:50.91ID:???しかし現地アメリカの人たちはサクサクとアクセス出来てますか?
確認する方法などありますか?
アメリカ国内から何とか、そのアプリ鯖にping打って試したいです
0114nobodyさん
2013/02/16(土) 20:55:00.09ID:ieTdgalIhttps://blog.heroku.com/archives/2013/2/16/routing_performance_update
0115nobodyさん
2013/02/17(日) 00:15:15.09ID:???.order('created_at DESC').limit(10)
の様にして最新の10件を抜き出し、
viewへの出力の段にてこれを逆順に出力したいのですが、いい方法が
思いつきません(z-indexを利用せずに新しいものを最前面に表示させたい)。
なにか良い方法はありますでしょうか?
0116nobodyさん
2013/02/17(日) 00:36:12.93ID:???DESC
0117nobodyさん
2013/02/17(日) 00:57:41.40ID:???.order('created_at ASC').each do
の様にviewを書いても変わりませんし(そりゃそうか)
んんん・・・
0118nobodyさん
2013/02/17(日) 01:16:11.73ID:???@entries.reverse.each do
0120nobodyさん
2013/02/17(日) 01:40:20.32ID:???ActiveRecord::Delegation で委譲してるって理解であってますか?
0121nobodyさん
2013/02/17(日) 08:31:05.00ID:SqhksB7Thttp://www.amazon.co.jp/gp/product/4774155071
0122nobodyさん
2013/02/17(日) 13:59:34.77ID:???昨日よりrubyを触り始めたんですが、命名規則で悩んでいます
アンダースコアとキャメルケースは使い分ける必要がありますか?
片っ端からキャメルケースだと今までの経験上楽なんですけど、
いろいろ読んでるとアンダースコアとキャメルケースが混在してるので気になりました。
0123122
2013/02/17(日) 15:18:22.92ID:???0124nobodyさん
2013/02/18(月) 08:32:17.40ID:???http://b.hatena.ne.jp/entry/gwan.ch/
G-WAN - Web Application Server | Hacker News
http://news.ycombinator.com/item?id=4109698
0125nobodyさん
2013/02/18(月) 12:23:32.29ID:???beforefilterで、@time = Time.now.to_i
して、
application.html,erb の最後でTime.now.to _i - @time をしてもマイナスになったりプラスになったりします
0126nobodyさん
2013/02/19(火) 01:08:03.88ID:QDksJcEehttps://twitter.com/6mx/status/303494823715942400
0127nobodyさん
2013/02/19(火) 11:07:05.23ID:???http://b.hatena.ne.jp/entry/s/speakerdeck.com/mirakui/quan-zi-dong-parametatiyuningusan
0128nobodyさん
2013/02/20(水) 01:17:24.73ID:kKKYc1q5https://shellycloud.com/
0129nobodyさん
2013/02/20(水) 01:47:38.41ID:kKKYc1q5http://aws.typepad.com/aws_japan/2013/02/aws-opsworks-flexible-application-management-in-the-cloud.html
0130nobodyさん
2013/02/20(水) 03:13:42.92ID:???AWS OpsWorksのご利用には、追加の料金はかかりません。
アプリケーションで使っているAWSのリソース(EC2インスタンス、EBSボリュームなど)だけの支払いでOKです。
http://aws.typepad.com/aws_japan/2013/02/aws-opsworks-flexible-application-management-in-the-cloud.html
Engine Yard Cloud は Amazon Elastic Compute Cloud (EC2) 上で稼働しており、Engine Yard Cloud のデプロイ環境に対して、
追加で Amazon のサービスをご利用になる場合には、Amazon 料金の 20% 増しの料金でご利用いただけます。
http://www.engineyard.co.jp/products/cloud/pricing
HerokuからEngine Yardに移行させる時にはこれで自動化「Engine Yard Migrate」
http://www.moongift.jp/2011/03/20110326/
0131nobodyさん
2013/02/20(水) 11:52:04.32ID:kKKYc1q50132nobodyさん
2013/02/20(水) 14:43:44.90ID:???Entry User Favorite
のモデルがあって
user_list = User.joins(:favorite).where(favorites: {entry_id: @entry.id}).pluck("users.id")
@data_list = Entry.joins(favorites: :user).where(users: {id: user_list}).order("favorites.id DESC").limit(10)
このように取得しているのですが、お気に入りしているユーザー数が1000人くらいを超えている場合2個目の検索で1000msほどかかってしまいます
何かしらよい方法はないでしょうか?
0133nobodyさん
2013/02/20(水) 16:19:34.51ID:???http://www.ustream.tv/recorded/25419544
Enumerable#entries
http://ruby-doc.org/core-1.9.3/Enumerable.html
0134nobodyさん
2013/02/20(水) 16:23:14.78ID:???http://www.atmarkit.co.jp/news/201004/19/twitter.html
0135nobodyさん
2013/02/20(水) 16:47:51.33ID:???試してみたけどマイナスになることはなかった
>>132
user_list に limit 付けるとかは駄目なの?
0136nobodyさん
2013/02/20(水) 23:31:40.12ID:???entriesテーブルに、user_idとfavorite_idの複合index貼れば10ms以下になると思う
0137nobodyさん
2013/02/21(木) 01:40:33.44ID:???http://www.gatc.jp/gat/it/it02dbindex.html
データベースを管理する ー インデックスをはる 其の二 | アカツキ メンバーズ ブログ Akatsuki Member's Blog
http://tech.aktsk.jp/%E6%8A%80%E8%A1%93/database/20111130/228
0138nobodyさん
2013/02/23(土) 12:32:35.13ID:???Functionalテストのorders_controller_test.rbの中で、
以下のような記述がありました。
get :new,{},{cart_id: cart.id}
上記の:newの後の"{}"が分からないです。
因みにgetメソッドの構文は以下の通りです。
get(action [,params[session[,flash]])
この"{}"はorder_idの分と考えて良いですか?
削除するとCommand Failedが発生します。
0139nobodyさん
2013/02/23(土) 18:15:27.80ID:SC4SCbPWyes
get action
get action, params
get action, params, session
get action, params, session, flash
のいずれかの呼び出しが出来るわけだが、paramsが空だからと言って
書かずにいると、形式的には2番目の構造になるので、セッションのデー
タとして渡すはずの { cart_id: cart.id } が params だと見なされてしまう。
0140nobodyさん
2013/02/23(土) 20:51:37.27ID:???どういうふうにやれば当てられるのかさっぱりわかりません……
方法を教えていただけませんでしょうか
0141nobodyさん
2013/02/23(土) 20:53:12.15ID:???の中に
module RailsAutolink::ActionView::Helpers::TextHelper
class auto_link
hogehoge
end
end
と書いてみたのですが上書き出来ずno method errorが発生しました
0142nobodyさん
2013/02/23(土) 21:21:43.09ID:???この問題を解決してもすぐ次の問題にぶちあたってここに聞いてくる姿が目に見える
0145nobodyさん
2013/02/24(日) 11:38:16.50ID:???メソッドとかで、なくてもいいけど、あったら評価したいような引数はハッシュでとって、
メソッド (オプション1: バリュー,オプション3:バリュー)
って書けるようにするのが多い
0147nobodyさん
2013/02/24(日) 16:07:11.62ID:???Node.jsも時代を変えるとか言われたが、実際使ってみるとかなり動的なサービスでないとパワーを発揮できないし、やはりrailsが王道
0148nobodyさん
2013/02/24(日) 19:55:56.11ID:???0149nobodyさん
2013/02/24(日) 23:34:05.86ID:???Ruby 2.0.0-p0 リリース
0150nobodyさん
2013/02/25(月) 18:24:10.37ID:???Railsって、ライブラリ(gem)の豊富さが他Webフレームワークに比べてピカイチだと思う。
でも、全部JavaScriptでいけるMeteorとか、今後の競合になりそうだよね。
あれでライブラリが豊富になったら、Railsにとってかなり手強い相手になりそうだ。
0151nobodyさん
2013/02/25(月) 22:04:40.14ID:ju6SM6+y0152nobodyさん
2013/02/26(火) 15:38:59.44ID:LQxRW7Ckhttp://weblog.rubyonrails.org/2013/2/25/Rails-4-0-beta1/
0153nobodyさん
2013/02/26(火) 17:51:22.17ID:bbsNYoxvリミットをコントローラ側で指定したいのですが…
0154nobodyさん
2013/02/26(火) 21:22:06.16ID:W42IkqHUfoo.bars.limit(LIMIT).where(...) とかより複雑な話?
0155nobodyさん
2013/02/26(火) 23:32:30.36ID:bbsNYoxv例えばモデルの設定ではリミットを設けないけれど、ある状況でコントローラで取得する際にはリミットを設ける場合を想定しています
0156155
2013/02/27(水) 12:15:59.99ID:???cakePHPのようにコントローラで条件を弄れると思っていたのですが、モデル側でclass_nameを使って条件を複数用意しておけばよかったんですね
0157nobodyさん
2013/02/27(水) 13:37:52.33ID:N+jceXYUhttp://blog.digital-squad.net/article/125116877.html
0158nobodyさん
2013/02/28(木) 11:46:21.42ID:???http://hobocentral.net/blog/2013/02/27/2-0-0-final
相変わらずヘビーな
0159nobodyさん
2013/02/28(木) 12:12:05.74ID:Cb5/migAhttp://vimeo.com/60361561
0160nobodyさん
2013/02/28(木) 20:45:14.28ID:???Hoboなんての初めて知った。
ググってみたけど、日本の記事はほとんどヒットしないね。
使ってる人いるのかな?
0161nobodyさん
2013/03/01(金) 15:50:20.83ID:???分かりやすい model ベースの permission、
erb 使わなくて済む & tablib を作れる dryml、
taglib の rapid、
migration generator、
あとは HoboSupport の _? とか *。
ただ、magical すぎて、慣れないとうまく動かないときの原因究明に時間がかかることがあるのと、
Rails が更に遅くなる。
■ このスレッドは過去ログ倉庫に格納されています