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

【RoR】Ruby on Rails Part16

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2013/01/31(木) 08:07:31.27ID:GGHiBszv
前
http://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
0002nobodyさん2013/01/31(木) 17:58:26.67ID:McZkc4zd
a
0003あ2013/01/31(木) 23:17:53.99ID:McZkc4zd
b
0004nobodyさん2013/02/01(金) 10:19:11.63ID:???
sanitize('>>1')
0005nobodyさん2013/02/02(土) 04:40:50.70ID:???
質問させてください

たとえばタグクラウドがあって
その中のfooというタグをクリックして

http://hoge.com/posts?tag=foo

に飛んだとします


すると

@posts = Post.find_all_by_tag(params[:tag])

で結果レコードを取得して表示しますが
ここでブラウザー(safari)の戻るを押すと
いちいち「フォームを再送信してもよろしいですか?」といったメッセージが出てきます。

これが出てこないようにする方法ってありますか?
googleでキーワード検索してブラウザーで前画面に戻っても出ませんよね

それが理想です
0006nobodyさん2013/02/02(土) 05:35:29.46ID:???
Railsの質問というより、HTTP MethodのPOSTとGETの違いを勉強するよろし
Googleのソレは、GETだから フォーム再送信の注意が出てこない
0007nobodyさん2013/02/02(土) 06:46:38.27ID:???
>>6
前ページのHTML内のFORMのMETHODは全てGETなんです

なので不思議でたまりません

あ、分かったかも。。。Twitterの新
ウィジェットがもしかして悪さしてますか?あれってツイート入力してそのまま送れますよね?
0008nobodyさん2013/02/02(土) 12:49:58.97ID:???
Railsを動かすサーバってVPSかクラウドだけ?
0009あ2013/02/02(土) 13:06:51.79ID:gQtUcBSu
http://www.heroku.com/
http://sqale.jp/
http://c4sa.nifty.com/
http://mogok.jp/
http://www.gehirn.co.jp/
http://rackhub.net/
https://www.action.io/
https://c9.io/
0010nobodyさん2013/02/02(土) 13:21:08.72ID:???
ほとんどクラウドじゃん
0011nobodyさん2013/02/02(土) 14:58:00.44ID:???
http://ja.wikipedia.org/wiki/PaaS
http://ja.wikipedia.org/wiki/SaaS
http://ja.wikipedia.org/wiki/IaaS
0012nobodyさん2013/02/02(土) 20:13:29.27ID:???
Macをお使いの方
どなたか>>7をお願いします

実際にどのページでも常に表示されるように設置してみて
ブラウザの戻るを押してみてください。

これって解決方法ないですかねぇ
0013nobodyさん2013/02/02(土) 21:26:06.19ID:???
safari以外では再現しないの?
0014nobodyさん2013/02/02(土) 23:32:33.80ID:???
>>12
Macじゃないし全く確認もしてないけど、

ページAのTwitter新ウィジェットとやらで何かPOST
→ページBを表示 (このページがPOSTパラメータに依存)

ページBのタグクラウドとやらをクリック
→ページCを表示

このとき、CからBに戻ったときにその確認が出るのは
あたりまえ。ウィジェットとやらをGETで使えないか調べるか
それ使うのをやめるしか無い。

ページCの内容はこの話になんにも関係ない
0015nobodyさん2013/02/03(日) 00:22:42.85ID:???
>>13
再現しませんね
Twitterはこんなことを検証しないでリリースしたのでしょうか?
それともMacのsafariを見限ったか



>>14
調べてもなかなか出てきませんね
確実にtwitterウィジェットとsafariの組み合わせの問題のようです
0016nobodyさん2013/02/03(日) 00:25:56.97ID:???
横槍すみません

現在運用してるRoRで作られたサイトがあります
メモリ1GBなのが辛いのか?
それとも設計自体に問題があるのか?

少し閲覧者が増えただけで
ページをロードするだけでバカみたいに重く(遅く)なってきました。


スペックの高いサーバーを別に借りて
同じソフトを入れていって
同じ環境を作り

アプリをそのままコピペ

既存のデータベースをエクスポートしておきたものを
新しい方へインポート

通常であればこれだけで動き出しますか?
該当ディレクトリ内の各種パーミッションが気になるところではありますが
0017nobodyさん2013/02/03(日) 11:05:57.60ID:???
Ruby on Rails 3.1 でセッションを memcached に保存する - ux00ffの日記
http://d.hatena.ne.jp/ux00ff/20111128/1322495435

Rails3からmemcachedを利用する | Banana Systems 株式会社
http://www.banana-systems.com/2010/09/rails3_memcached/
0018あ2013/02/03(日) 22:31:44.88ID:???
スタートアップ企業で8年間Webの開発をしてみての反省点いろいろ - Masatomo Nakano Blog
5. ハードウェアは正しく適正なものを買おう
6. サーバ周りの人材をしっかり確保しよう
http://b.hatena.ne.jp/entry/blog.madoro.org/mn/84
http://blog.madoro.org/mn/84
0019nobodyさん2013/02/04(月) 02:34:37.60ID:???
nginx と apacheだと全然速度が違ってきますか?

productionにしたんですが
なんというか時間の経過とともにhttpの動き自体が異常なくらいに重くなっていきます。

アクセスも最大接続20程度なのに。。。。

どなたか、よろしくお願いします
0020nobodyさん2013/02/04(月) 02:35:31.93ID:???
ちなみに現在がapache2です
0021nobodyさん2013/02/04(月) 07:39:09.41ID:???
プログラムの作り
使ってるDBとその設定
サーバスペック

などによりけり
0022nobodyさん2013/02/04(月) 08:02:41.46ID:???
>>21
メモリ1GBでデイリーPV1万人越えの会員サイトは絶えられますか?
0023nobodyさん2013/02/04(月) 09:53:58.83ID:???
だからメモリだけじゃないと言ってるだろ…
0024nobodyさん2013/02/04(月) 10:21:13.32ID:???
OSにもよるな。もしLinuxでないなら。
あまりに古いマシンでなければ、デイリー1万PVなんて余裕でしょ。
動画サイトだと厳しいだろうが。
0025あ2013/02/04(月) 11:40:11.70ID:???
Togetter(トゥギャッター) - まとめ「700万PVのRails製サイトが月$60のVPS(メモリ1GB)で動かせるという話」
http://togetter.com/li/4514
0026nobodyさん2013/02/04(月) 12:31:18.93ID:5sF210yV
リンギオ - 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
0027nobodyさん2013/02/04(月) 14:38:47.67ID:5sF210yV
Rails + New Relic ならレスポンスタイム等のパフォーマンス監視が簡単にできるよ - 彼女からは、おいちゃんと呼ばれています
http://b.hatena.ne.jp/entry/d.hatena.ne.jp/inouetakuya/20121216/1355656214
0028nobodyさん2013/02/04(月) 19:42:42.93ID:???
>>23
>>24
CentOSです

とくにページキャッシングやフラグメントキャッシングは使っていません。

サイトのほう自体の動きは大して重くならないんですが

webminのapacheメニューでapply changesを押したとき
今まではすぐに反映されてたのが
今は10秒くらいかかるようになり
なんだか管理側のアクセス?が異常に重くなっています


それに伴いサイト自体の動きも遅くなっているのでは?と判断しています
0029nobodyさん2013/02/04(月) 22:08:48.05ID:???
自分でサーバ立てるのってなんか楽しそうだしスゴそうだよね?
サーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ハードウェアの多重化なんて必要?
企業で使うとかじゃなく個人的に細々と立てたサーバが攻撃されることなんて滅多にないよね?
ADSL でつないでれば大丈夫だよね?
攻撃が来るって言ったって大した数じゃないんでしょ?
攻撃されたって大したことは起きないんでしょ?
http://b.hatena.ne.jp/entry/tmaeda.s45.xrea.com/20041101.html
0030nobodyさん2013/02/04(月) 22:14:55.10ID:???
サーバー管理知識が無くても「さくらVPS」をレンタルサーバーのように使える方法
http://b.hatena.ne.jp/entry/www.wakatta-blog.com/vps.html
0031nobodyさん2013/02/04(月) 22:18:02.79ID:???
ITmedia エンタープライズ:自社サーバがフィッシングサイトに「踏み台化」されたら? (1/3)
また、電源を切ってしまうことも良い対応ではない。
オンメモリ上で稼働しているフィッシングサイトの場合は、電源を切ることによって、すべてのデータが消えてしまい、原因究明や対応に遅れなどが出ることも考えられるからだ。
 事実、フィッシングサイトを構成するツールの中には、後に証拠が残らないよう、すべてがオンメモリ上で動作するものがある。
このような場合、再起動や電源オフによって、メモリ上にあるすべてのプログラムやファイルが消え、事実や原因の確認が困難になる。
http://www.itmedia.co.jp/enterprise/articles/0603/17/news004.html
0032nobodyさん2013/02/04(月) 23:10:08.64ID:5sF210yV
New York Timesの記事によれば、同紙は米Symantecのウイルス対策製品を使っていたが、
Mandiantが調べた結果、攻撃者が使った45種類のカスタム版マルウェアのうち、Symantecの製品で検出できたのは1種類のみだったという。
http://bylines.news.yahoo.co.jp/yamamotoichiro/20130204-00023332/
0033nobodyさん2013/02/05(火) 07:33:38.29ID:???
2つ質問させてください

普通にrailsでアプリをくめば無意識に
idカラムには自動的に索引は適用されるようになっているのでしょうか?


もしアプリがすで動いていて
booksテーブルのtitleカラムに既存のレコードも含め
索引を急遽付けたくなった場合は
マイグレーションファイルを作成して対処できますか?
その場合はどのように記述すべきでしょうか?
0034nobodyさん2013/02/05(火) 10:38:28.96ID:???
railsが自動的にって事はないはず
ただしDBによっては勝手に張られるみたい
mysqlでは張られてて、sqlite3では張られてなかった
これはDBの機能ってどっかで読んだ

普通に add_index :books, :title で良いんじゃないの
0035nobodyさん2013/02/05(火) 13:25:02.75ID:XBXTjn08
RubySource | Anatomy of an Exploit: An In-depth Look at the Rails YAML VulnerabilityRubySource
http://rubysource.com/anatomy-of-an-exploit-an-in-depth-look-at-the-rails-yaml-vulnerability/
0036nobodyさん2013/02/05(火) 18:02:39.35ID:???
iphoneアプリ、Windowsアプリを売って生き残れ Ver 1.6
http://tinyurl. com/9w97424
0037nobodyさん2013/02/07(木) 23:11:16.21ID:NFy8vZhH
ruby on railsを本気で勉強したいです。
出来るだけ詳細で深く突っ込んだ書籍を探しています。
英語は苦手ですが洋書も含めて探しています。
本じゃなくてもサイトでもepubでもkindleでもなんでも構いません。

オススメの書籍がありましたら教えてください。よろしくお願いいたします。
0038nobodyさん2013/02/07(木) 23:58:16.55ID:Te1cij5l
はじめる! Rails3(1) - 達人出版会
http://tatsu-zine.com/books/rails3

Amazon.co.jp: Ruby on Rails 3 アプリケーションプログラミング: 山田 祥寛: 本
http://www.amazon.co.jp/gp/product/4774146633

Amazon.co.jp: RailsによるアジャイルWebアプリケーション開発: Sam Ruby, Dave Thomas, David Heinemeier Hansson, 前田 修吾: 本
http://www.amazon.co.jp/gp/product/4274068668
0039nobodyさん2013/02/08(金) 00:39:07.29ID:???
すいません、生意気なことを言って申し訳ないですが、そういう初心者向けの本は求めてないです。
0040nobodyさん2013/02/08(金) 00:47:53.18ID:???
>>37
今から勉強しても金にならない技術だよ
それにrailsってクソ遅いよ

rails 遅い でググってみ

チューニングがみたいなこと言い出す奴いるけど
それ以前の問題だから


素直にjavaやったほうが100倍将来性もあるし
いいよ
0041nobodyさん2013/02/08(金) 00:48:48.99ID:???
twitterといい脱railsだからね
未だにrailsをメインで使ってる時代遅れなサービスってあるの?
0042nobodyさん2013/02/08(金) 01:13:50.88ID:???
本気で勉強したいならコード読むのが良いんじゃないの
0043nobodyさん2013/02/08(金) 01:44:06.79ID:???
https://github.com/rails/rails
0044nobodyさん2013/02/08(金) 03:06:27.47ID:???
>>41
お約束だけどクックパッドとか?
0045nobodyさん2013/02/08(金) 07:37:57.93ID:???
>>44
もうそんなもんじゃん
0046nobodyさん2013/02/08(金) 08:13:07.52ID:???
girhub, 食べログ
0047nobodyさん2013/02/08(金) 17:37:38.97ID:???
twitterはむしろ途中までよくあの規模のサイトでrailsで運用してたなと感心するレベル
0048nobodyさん2013/02/08(金) 17:47:49.04ID:???
>>47
一日何UVくらいまでrailsでやってたの?
メインホストPC1台だけだったの?
さすがにクラスタリングとかしてるよね?
0049あ2013/02/08(金) 17:48:28.57ID:???
2月13日。「バレンタインデー」の前日に、クックパッドのシステム負荷は1年で最も高くなる。
手作りチョコレートなどのレシピを求めて、ユーザーが殺到するからだ。
この日のアプリケーションサーバーへのリクエスト数は、
最大で毎秒5000件。負荷は通常時の数倍に達する。
http://itpro.nikkeibp.co.jp/article/Active/20120719/410229/
0050あ2013/02/08(金) 17:52:43.98ID:???
結局何度かテストを実施したところ一番良い時で4813件/秒まで行きました。
http://blog.flect.co.jp/labo/2012/09/heroku-meetup-6-5d24.html
0051nobodyさん2013/02/08(金) 17:57:36.30ID:5Ag+30XH
なぜ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
0052あ2013/02/08(金) 17:59:11.68ID:???
米Twitterが12月18日、月間アクティブユーザー数(MAU)が2億人を突破したと、公式Twitterで発表した。1億人を超えたのは昨年9月だった。
http://www.itmedia.co.jp/news/articles/1212/20/news101.html
0053あ2013/02/08(金) 18:02:12.62ID:???
1000000 daily users and no cache
http://www.slideshare.net/wooga/1000000-daily-users-and-no-cache

高トラフィックサイトをRailsで構築するためのTips基礎編
http://www.slideshare.net/kaznum/railstips
 
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
0054nobodyさん2013/02/08(金) 18:04:27.59ID:???
うちのVPSクソサイトなんて
一秒間に2つしかリクエストを処理できない

なんで、こんなにも違うのさ
0055nobodyさん2013/02/08(金) 18:22:51.32ID:???
今はJavaだよ
http://www.infoq.com/jp/news/2012/11/twitter-ruby-to-java
0056あ2013/02/08(金) 18:38:41.59ID:???
Rails Hub情報局: Twitterは意外なほどRuby on Railsでできている!?
http://b.hatena.ne.jp/entry/el.jibun.atmarkit.co.jp/rails/2012/10/twitterruby-on--0ce5.html

Twitter がまだ Ruby on Rails を使っているらしい証拠を発見した。 - 杉風呂2.0 - A Lifelog -
http://d.hatena.ne.jp/suginoy/20120726/p1
0057nobodyさん2013/02/08(金) 18:56:38.25ID:???
>>54
それは ab の結果?
さすがにおかしくないっすか
0058nobodyさん2013/02/08(金) 18:58:34.67ID:???
昨年末くらいにコケた時、一部でRailsのテンプレ周りのエラーメッセージ出てたからビックリしたわ
0059nobodyさん2013/02/08(金) 21:59:43.86ID:???
毎秒5000程度ならどんなフレームワークでも対応できそうだけどw
0060nobodyさん2013/02/09(土) 20:24:14.39ID:???
Railsはオワコンとかクソ重いとか、ちゃんと自分で測って言っているのか?
他人の記事のURLを引用して主張するなんてバカでもできる。

もっと、Railsが今でも使えるモノかどうか、客観的な議論はないのか?
もちろん、Twitterレベルの規模のサービスで使うのは無理があると思うが……。
0061nobodyさん2013/02/09(土) 22:42:13.16ID:???
nginxを使って、時間のかかるアクションはthin
かからないアクションはunicorn とかって出来ますか?
0062nobodyさん2013/02/10(日) 00:32:59.71ID:???
delayed_job
0063nobodyさん2013/02/10(日) 01:34:02.48ID:???
https://devcenter.heroku.com/articles/delayed-job
0064nobodyさん2013/02/10(日) 10:06:29.96ID:???
正直railsはオワコン
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:???
length とすると countのSQLは発行されず
ロードしたオブジェクトの個数を返すよ
0068nobodyさん2013/02/10(日) 12:15:33.74ID:???
>>67
ありがたや、ありがたや

要するにviewで
<%= @users.length.to_s %>
とすればいいんですね

となるとカウンターキャッシュを使う利点って何になってくるんですか?

・全てのアソシエーションをdependant=>destroy

・webアプリ自体以外からのレコード削除を行わない!


これらを前提としたときだけ
カウンターキャッシュが有用だよ!ってことですか?
0069nobodyさん2013/02/10(日) 12:18:33.72ID:???
>>67
すみません。追加で質問です

コントローラー内でも

@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:???
.order("posts_count") とか

includes(:posts)せずに
- @users.each do |user|
 = user.posts_count
とか
0071nobodyさん2013/02/10(日) 12:32:26.80ID:???
>>69 あってると思う
パフォーマンス計測にはbulletとか newrelicがおすすめ。
mysql専用のもあったんだけど名前忘れた。
0072nobodyさん2013/02/10(日) 12:33:30.82ID:???
>>70
ごめんなさい。ちょっと理解できるレベルじゃないみたいです。


>>71
ありがとうございます。
0073nobodyさん2013/02/10(日) 13:14:20.50ID:???
カウンターキャッシュの利用の有効性は>>68に書いた条件でいいですか?
0074nobodyさん2013/02/10(日) 20:31:40.28ID:???
レコードは rails console や、rails admin とか active admin なんかの gem から削除すれば良いよ
カウンターキャッシュに dependent: destroy は関係ないんじゃないかな
0075nobodyさん2013/02/11(月) 12:02:52.87ID:???
外国向けのアプリを作るとき
国によって時間の表示のさせ方を変えるのってどうすればいいですか?
0076nobodyさん2013/02/11(月) 15:33:36.27ID:???
i18n
0077nobodyさん2013/02/11(月) 15:34:47.47ID:n5nNToTb
http://guides.rubyonrails.org/i18n.html
0078nobodyさん2013/02/11(月) 15:40:52.68ID:???
>>76
>>77
ありがとう
i18nって変動する値には対応してないという認識なんだけど

言葉みたいな固定のものだけを
言語設定にあわせて表示してくれるかんじ

各国のユーザーが投稿しはじめたら
イギリスの標準時間に合わせて保存しておいて
表示させるときにどうにか計算させなおして
表示させるのかな?
仕組みが良く分からない
0079nobodyさん2013/02/11(月) 16:22:57.02ID:???
この記事参考になるんじゃないかな
http://qiita.com/items/68341489a9c5149b815d
0080あ2013/02/11(月) 18:25:58.92ID:???
I18n.localize Time.now
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:???
Riding Rails: [SEC][ANN] Rails 3.2.12, 3.1.11, and 2.3.17 have been released!
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:6eTPG0HR
ActiveRecordとマルチスレッドの組み合わせで教えてください。抜粋ですが以下のようなスクリプトです。
ruby1.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:6eTPG0HR
しかし,:memory:にすると、record.save!の行で
DEPRECATION 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:???
単純にスレッドが終わるの待ってないからでは。
エラー内容も読んでね。
0086832013/02/12(火) 17:19:58.23ID:6eTPG0HR
DEPRECATION...のエラー(ウォーニング)のほうは問題ないようです。
(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:IdZcVAQx
Rails SQL Injection Examples
http://rails-sqli.org/
0088nobodyさん2013/02/13(水) 11:27:53.61ID:???
RailsとCakePHPの両方やったが
Railsのメリットってなに?

CakePHPならレンタル鯖だろうが
ぶっこむだけで動き出すじゃん

しかも、鯖のメンテはホスティング会社が勝手にやってくれる

RailsはVPS以外では使えないし
そもそも一から必要なものをいろいろとSSHで入れていかなきゃダメ
かなりメンドイ

しかも、入れていくにしても
パッケージのバージョンの依存関係のせいでエラー勃発しまくり
まともな組み合わせを探せるまで
相当時間がかかる

時間が経てば旧バージョンを落とせなくなってたりもするし

そこまでしてなんでRailsを選ぶの?
何がそうさせる?
0089nobodyさん2013/02/13(水) 11:28:44.91ID:???
下手したらデプロイのほうが開発より時間かかる

とくにgemを多用してたりすると
0090nobodyさん2013/02/13(水) 13:04:59.79ID:???
Ruby+Railsは、PHP+CakePHPと比べて快適だから。
感覚的な問題だから、PHPのほうがいいという人もいるだろうし
そういう人はPHPを使ったほうがいいでしょう。
0091nobodyさん2013/02/13(水) 13:31:46.53ID:???
>>90
具体的にどういうふうに?
0092nobodyさん2013/02/13(水) 17:06:13.31ID:???
海外のVPS借りてる人いますか?

ftpでファイルをちょっと書き換えてアップとか
SSHが遅いんだけど、海外鯖だとこんなもんなのかな?
0093nobodyさん2013/02/13(水) 18:47:01.03ID:???
海外だとRTT大きいしSSHとかだと当然そうなるんじゃないの
0094nobodyさん2013/02/13(水) 20:17:35.22ID:???
>>91
感覚的にって書いてあるだろ。
日本語読めよ
0095nobodyさん2013/02/13(水) 21:39:34.56ID:???
しばらくは自己弁解モードでした。Rubyに変更しないための理由を作っていました。
一日経つと「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:pFcuxYSR
インタビュー:[楽天]Ruby活用事例とROMA,Fairy|gihyo.jp … 技術評論社
http://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:???
食べログの画面数は約200あるが,開発に取りかかって約2カ月で完成した。
「VBscriptならこの倍,PHPでも1.5倍はかかっていたのではないか」
コード量も10分の1になった。
http://itpro.nikkeibp.co.jp/article/OPINION/20071031/286028/
0098nobodyさん2013/02/13(水) 22:39:37.17ID:pFcuxYSR
https://twitter.com/junya/status/301581347649122306


https://twitter.com/Espen_Antonsen/status/299665397404274689
0099nobodyさん2013/02/13(水) 23:34:24.94ID:???
バージョンの依存関係で悩んだことなんてないぞ
もしかしてwindowsで使ってるimagemagickのひと?
0100nobodyさん2013/02/14(木) 05:20:58.50ID:XsxLpfIW
Show HN: Build your own Heroku on your own servers | Hacker News
http://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:???
Automate Amazon Web Services - Skeddly
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:XsxLpfIW
http://rapgenius.com/James-somers-herokus-ugly-secret-lyrics
0103nobodyさん2013/02/14(木) 07:45:28.88ID:XsxLpfIW
http://news.ycombinator.com/item?id=5215884
0104nobodyさん2013/02/14(木) 15:23:52.55ID:???
質問させてください

アメリカのVPSサーバー
日本国内のドメイン管理会社を使った場合

アメリカ人が現地でアクセスするとき
若干速度は落ちますか?

対策としてドメインもアメリカの管理会社に任せるべきですか?

それとも、速度は変わらない?
0105nobodyさん2013/02/14(木) 17:54:10.11ID:???
「DNSの浸透待ち」は回避できる――ウェブ担当者のためのDNS基礎知識 -INTERNET Watch
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:???
>>106
ありがとうございます
気にすればいいのは
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:???
じゃあ日本からだと基本的に西海岸のサーバーの方がpingがいいのかな?
よくMMOとかでサーバーを東海岸か西海岸か選べたりするけど
0110nobodyさん2013/02/15(金) 08:43:51.62ID:???
距離があるんだから、遅延あるのは当たり前
AWSで西海岸と日本で作って試してみ
0111nobodyさん2013/02/15(金) 08:58:54.58ID:8vTfrSUf
Rails 3.2.10 Remote Code Execution &#8212; Charlie Somerville  
ttp://charlie.bz/blog/rails-3.2.10-remote-code-execution
0112nobodyさん2013/02/15(金) 14:33:50.91ID:???
日本からアメリカ鯖に立てたアプリにアクセスすると若干モッサリです

しかし現地アメリカの人たちはサクサクとアクセス出来てますか?
確認する方法などありますか?
アメリカ国内から何とか、そのアプリ鯖にping打って試したいです
0113nobodyさん2013/02/15(金) 21:51:46.21ID:???
>>112
railに関係ない
0114nobodyさん2013/02/16(土) 20:55:00.09ID:ieTdgalI
Heroku | Routing Performance Update  
https://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:???
ASC
DESC
0117nobodyさん2013/02/17(日) 00:57:41.40ID:???
>>116
.order('created_at ASC').each do
の様にviewを書いても変わりませんし(そりゃそうか)

んんん・・・
0118nobodyさん2013/02/17(日) 01:16:11.73ID:???
こういうことかな
@entries.reverse.each do
0119nobodyさん2013/02/17(日) 01:21:24.75ID:???
>>118
抱いて下さい
0120nobodyさん2013/02/17(日) 01:40:20.32ID:???
ActiveRecord::Relation は Enumerable を include してるんじゃなくて
ActiveRecord::Delegation で委譲してるって理解であってますか?
0121nobodyさん2013/02/17(日) 08:31:05.00ID:SqhksB7T
rails4
http://www.amazon.co.jp/gp/product/4774155071
0122nobodyさん2013/02/17(日) 13:59:34.77ID:???
railsというかrubyの質問かもしれません
昨日よりrubyを触り始めたんですが、命名規則で悩んでいます
アンダースコアとキャメルケースは使い分ける必要がありますか?
片っ端からキャメルケースだと今までの経験上楽なんですけど、
いろいろ読んでるとアンダースコアとキャメルケースが混在してるので気になりました。
01231222013/02/17(日) 15:18:22.92ID:???
すいません、流してください
0124nobodyさん2013/02/18(月) 08:32:17.40ID:???
G-WAN is a Web Application Server with ANSI C scripts and a Key-Value store which outperform all other solutions.
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:???
railsでそのページの読み込みにかかった時間をユーザーに表示したいのですがどんな方法がありますか?
beforefilterで、@time = Time.now.to_i
して、
application.html,erb の最後でTime.now.to _i - @time をしてもマイナスになったりプラスになったりします
0126nobodyさん2013/02/19(火) 01:08:03.88ID:QDksJcEe
https://twitter.com/shobotch/status/303494070712541184
https://twitter.com/6mx/status/303494823715942400
0127nobodyさん2013/02/19(火) 11:07:05.23ID:???
全自動パラメータチューニングさん // Speaker Deck
http://b.hatena.ne.jp/entry/s/speakerdeck.com/mirakui/quan-zi-dong-parametatiyuningusan
0128nobodyさん2013/02/20(水) 01:17:24.73ID:kKKYc1q5
Shelly Cloud  
https://shellycloud.com/
0129nobodyさん2013/02/20(水) 01:47:38.41ID:kKKYc1q5
Amazon Web Services ブログ: 【AWS発表】AWS OpsWorks - Chefを使って柔軟にクラウド内のアプリケーション管理ができる新サービスを発表
http://aws.typepad.com/aws_japan/2013/02/aws-opsworks-flexible-application-management-in-the-cloud.html
0130nobodyさん2013/02/20(水) 03:13:42.92ID:???
EC2インスタンスにインストールするために、Chefのレシピを使うことができます。
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:kKKYc1q5
https://gist.github.com/mala/4986504
0132nobodyさん2013/02/20(水) 14:43:44.90ID:???
とある記事をFavoった人が他にFavoってる記事を表示したいです

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:???
"Entry"というモデル名をさける
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:???
なぜTwitterは低遅延のままスケールできたのか 秒間120万つぶやきを処理、Twitterシステムの“今” − @IT
http://www.atmarkit.co.jp/news/201004/19/twitter.html
0135nobodyさん2013/02/20(水) 16:47:51.33ID:???
>>125
試してみたけどマイナスになることはなかった
>>132
user_list に limit 付けるとかは駄目なの?
0136nobodyさん2013/02/20(水) 23:31:40.12ID:???
それで発行されるであろうSQLで1000msかかるのは単にindexが貼られてないからだと思う
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:???
RailsによるアジャイルWebアプリケーション開発の12章(p149)を勉強中なのですが、
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:SC4SCbPW
>>138

yes

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:???
Gemの一部分を上書きしたい(いわゆるモンキーパッチを当てたい)のですが
どういうふうにやれば当てられるのかさっぱりわかりません……

方法を教えていただけませんでしょうか
0141nobodyさん2013/02/23(土) 20:53:12.15ID:???
config/initialize/
の中に

module RailsAutolink::ActionView::Helpers::TextHelper
class auto_link

hogehoge

end
end

と書いてみたのですが上書き出来ずno method errorが発生しました
0142nobodyさん2013/02/23(土) 21:21:43.09ID:???
君には無理っぽい
この問題を解決してもすぐ次の問題にぶちあたってここに聞いてくる姿が目に見える
0143nobodyさん2013/02/24(日) 06:42:01.68ID:???
>>139
ありがとうございます
理解できました
0144nobodyさん2013/02/24(日) 09:10:42.88ID:???
>>141
その様子だと、まず ruby の基礎から勉強するしかない
0145nobodyさん2013/02/24(日) 11:38:16.50ID:???
たぶん、そのまま空のハッシュの意味だと思う

メソッドとかで、なくてもいいけど、あったら評価したいような引数はハッシュでとって、
メソッド (オプション1: バリュー,オプション3:バリュー)
って書けるようにするのが多い
0146nobodyさん2013/02/24(日) 11:40:07.48ID:???
>>145
へんなこと書いてた
無視して
0147nobodyさん2013/02/24(日) 16:07:11.62ID:???
Python,PHP,Rubyとやってきたけど、railsを超えるフレームワークってなさげやな(超えるが主観的すぎるけど)
Node.jsも時代を変えるとか言われたが、実際使ってみるとかなり動的なサービスでないとパワーを発揮できないし、やはりrailsが王道
0148nobodyさん2013/02/24(日) 19:55:56.11ID:???
Railsも4.0で迷走しそうだけどな
0149nobodyさん2013/02/24(日) 23:34:05.86ID:???
Rubyは今日で二十周年だったな
Ruby 2.0.0-p0 リリース
0150nobodyさん2013/02/25(月) 18:24:10.37ID:???
>>147
Railsって、ライブラリ(gem)の豊富さが他Webフレームワークに比べてピカイチだと思う。
でも、全部JavaScriptでいけるMeteorとか、今後の競合になりそうだよね。
あれでライブラリが豊富になったら、Railsにとってかなり手強い相手になりそうだ。
0151nobodyさん2013/02/25(月) 22:04:40.14ID:ju6SM6+y
http://ruby-toolbox.com/
0152nobodyさん2013/02/26(火) 15:38:59.44ID:LQxRW7Ck
Riding Rails: Rails 4.0: Beta 1 released!  
http://weblog.rubyonrails.org/2013/2/25/Rails-4-0-beta1/
0153nobodyさん2013/02/26(火) 17:51:22.17ID:bbsNYoxv
has_manyのアソシエーション条件をfindする前などに動的に変更するにはどうしたらいいのでしょうか?
リミットをコントローラ側で指定したいのですが…
0154nobodyさん2013/02/26(火) 21:22:06.16ID:W42IkqHU
何を尋ねられているか分からん。

foo.bars.limit(LIMIT).where(...) とかより複雑な話?
0155nobodyさん2013/02/26(火) 23:32:30.36ID:bbsNYoxv
>>154
例えばモデルの設定ではリミットを設けないけれど、ある状況でコントローラで取得する際にはリミットを設ける場合を想定しています
01561552013/02/27(水) 12:15:59.99ID:???
すいません自己解決しました
cakePHPのようにコントローラで条件を弄れると思っていたのですが、モデル側でclass_nameを使って条件を複数用意しておけばよかったんですね
0157nobodyさん2013/02/27(水) 13:37:52.33ID:N+jceXYU
Railsのclass_nameは使ってはいけない。|WEBデザイン Tips  
http://blog.digital-squad.net/article/125116877.html
0158nobodyさん2013/02/28(木) 11:46:21.42ID:???
Hobo 2.0.0 released!
http://hobocentral.net/blog/2013/02/27/2-0-0-final
相変わらずヘビーな
0159nobodyさん2013/02/28(木) 12:12:05.74ID:Cb5/migA
http://vimeo.com/60361566

http://vimeo.com/60361561
0160nobodyさん2013/02/28(木) 20:45:14.28ID:???
>>158
Hoboなんての初めて知った。
ググってみたけど、日本の記事はほとんどヒットしないね。
使ってる人いるのかな?
0161nobodyさん2013/03/01(金) 15:50:20.83ID:???
色々便利ですよ。記述量も Rails から更に減る。
分かりやすい model ベースの permission、
erb 使わなくて済む & tablib を作れる dryml、
taglib の rapid、
migration generator、
あとは HoboSupport の _? とか *。
ただ、magical すぎて、慣れないとうまく動かないときの原因究明に時間がかかることがあるのと、
Rails が更に遅くなる。
0162nobodyさん2013/03/01(金) 18:41:59.48ID:???
caches_page
で指定したアクションの途中で条件によってキャッシュしないことにできない?
具体的にはpaginationのあるページで最終ページだけはページキャッシュしたくない
0163nobodyさん2013/03/01(金) 22:47:26.56ID:gDaa9weT
条件によってキャッシュしたりしなかったりは if: オプションで出来るが、
ページキャッシュの実装はafter_filterなので、アクション処理の「途中で」
ってのは難しいかも。
0164nobodyさん2013/03/02(土) 09:03:36.86ID:jmXZJcwy
>>163
showでインスタンス変数に条件セットして:ifでattr_readerの名前指定したらいけた
01651552013/03/02(土) 15:53:26.74ID:???
テンプレートエンジンのslimに興味があって少し触ってみたのですが、ソースコードに改行を挟めないんですか?
動作確認をするときにソースの見通しが悪いと不便になりそうなので気にかかります
0166nobodyさん2013/03/02(土) 16:10:57.91ID:AzwBGg8L
"Entry"というモデル名をさける
http://www.ustream.tv/recorded/25419544

Enumerable#entries
http://ruby-doc.org/core-1.9.3/Enumerable.html
0167nobodyさん2013/03/04(月) 13:56:38.13ID:zJe7Zmvl
>>165
| 縦棒
とかを使えば改行出来たはず。
0168nobodyさん2013/03/06(水) 21:49:04.93ID:???
質問です。

メーラーを使う際に、DB上では

-------この次の行から------
一行目

三行目
四行目
-------この前の行まで------


という文字列が格納されています。これは

body = params[message][body]
でフォームに入力された文字列が改行も含めbodyカラムに格納されます。
メーラーのテンプレートは↓です

<p>
<%= @message.body.html_safe %>
</p>

送信されてくるHTMLメールでの表記が

一行目三行目四行目

というように改行を無視して繋がってしまいます。

ビュー上、またはコントローラー上で
改行を<br>に置き換えるには、
どのようにすれば可能ですか?
(gemを利用しておりモデルを改変することが出来ません)
0169nobodyさん2013/03/06(水) 22:40:46.81ID:0aWWruQm
>>168
地道に置換してもいいし、simple_format というヘルパもある。
0170nobodyさん2013/03/06(水) 22:50:47.95ID:???
>>169
simple_formatってgemでしたっけ?

controllerを介さず
view内だけで置換って出来ましたっけ?
0171nobodyさん2013/03/06(水) 23:43:29.42ID:0aWWruQm
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
0172nobodyさん2013/03/07(木) 00:11:48.78ID:???
デフォであったんですね
ありがとうございます。
0173nobodyさん2013/03/12(火) 12:46:09.07ID:???
railsって覚える事たくさんある?初心者は難しいもの?
0174nobodyさん2013/03/12(火) 18:18:50.06ID:???
他の言語のフレームワークと同じくらいじゃないの
gemによる拡張性が大きいから使いこなすには時間かかるかもしれないけど
0175あ2013/03/12(火) 19:33:55.07ID:HwSt3WT4
require 'sinatra'

get '/hi' do
"Hello World!"
end
http://www.sinatrarb.com/
0176あ2013/03/12(火) 19:36:21.36ID:HwSt3WT4
Ruby on Railsはとんでもない生産性を誇るWebアプリケーション作成フレームワークだ。
http://blog.livedoor.jp/zep716/archives/24182409.html
0177あ2013/03/12(火) 19:39:18.67ID:HwSt3WT4
従来の環境では膨大なXML設定ファイルを記述する必要がありました。
Railsでは規約(conventions)に従って、自動的に設定が行われます。
それがconventions over configurationです。
たとえばpeopleというクラスを定義すれば、
規約に基づいて自動的にその単数形であるpersonと関連付けられます。
設定ファイルを記述する必要はありません。
http://itpro.nikkeibp.co.jp/article/NEWS/20060620/241346/
0178nobodyさん2013/03/12(火) 20:09:07.89ID:HwSt3WT4
https://twitter.com/shu_0115/status/311364671808602113
0179nobodyさん2013/03/13(水) 11:42:02.60ID:???
Linuxサーバーって一回設定したら以後放置だよね。Windows Update + Windows Serverの方がよいよね
http://engawa.2ch.net/test/read.cgi/poverty/1363142026/
0180nobodyさん2013/03/14(木) 09:44:29.02ID:SnFlKftv
dommmel : 1600% faster app requests with Rails on Heroku
https://coderwall.com/p/5cafjw

1600% faster app requests with Rails on Heroku | Hacker News
https://news.ycombinator.com/item?id=5370465
0181nobodyさん2013/03/16(土) 22:24:52.43ID:???
ruby2.0.0にアップデートしたらrailsが凄く早くなったよ!
ちゃんとベンチマーク取ってないけど、PHPと遜色ないレベルになった気がする
0182nobodyさん2013/03/18(月) 05:42:46.82ID:???
それ早いって言わないから
0183あ2013/03/18(月) 09:43:11.15ID:io66Pxmf
Sails by balderdashy  
http://balderdashy.github.com/sails/
0184nobodyさん2013/03/18(月) 09:48:45.05ID:io66Pxmf
Riding Rails: [ANN] Rails 3.2.13.rc2 has been released!  
http://weblog.rubyonrails.org/2013/3/7/Rails-3-2-13-rc2-has-been-released/
0185nobodyさん2013/03/18(月) 09:51:29.41ID:io66Pxmf
WebSockets on Rails 4 and Ruby 2 - Pogoapp  
http://www.pogoapp.com/blog/posts/websockets-on-rails-4-and-ruby-2
0186nobodyさん2013/03/18(月) 10:38:47.78ID:???
>>182
Railsが遅すぎてPHPに移行したなんて話もあるんだから
0187あ2013/03/19(火) 01:54:48.68ID:HY0pwsvC
インタビュー:[楽天]Ruby活用事例とROMA,Fairy|gihyo.jp … 技術評論社
http://gihyo.jp/dev/column/01/prog/2010/030801?page=2
RailsとCakePHPを比べたところ,高負荷時にはRails のほうが大幅に応答性能が高いという結果が出たことですね。
これは200リクエスト/秒くらいからPHPの応答性能が急激に下がるのが原因です。
Rubyはそれほど大きくはパフォーマンスが落ちないんです。
0188あ2013/03/19(火) 04:59:47.29ID:HY0pwsvC
Rails 3.2.13, 3.1.12, and 2.3.18 have been released!

CVE-2013-1854 Symbol DoS vulnerability in Active Record
CVE-2013-1855 XSS vulnerability in sanitize_css in Action Pack
CVE-2013-1856 XML Parsing Vulnerability affecting JRuby users
CVE-2013-1857 XSS Vulnerability in the sanitize helper of Ruby on Rails

http://weblog.rubyonrails.org/2013/3/18/SEC-ANN-Rails-3-2-13-3-1-12-and-2-3-18-have-been-released/
0189nobodyさん2013/03/19(火) 07:23:46.26ID:HY0pwsvC
Strutsのシェアが欧米は1%以下なのに日本では30%以上
http://b.hatena.ne.jp/entry/d.hatena.ne.jp/iad_otomamay/20130318/1363596244
0190nobodyさん2013/03/19(火) 18:14:14.66ID:???
RailsというよりRubyよりの質問だと思うのですが、携わっているプロジェクトがRailsなのでこちらで質問させてください
引数で来たインスタンスの型チェックというのは、皆さん されるものなのでしょうか?

def hoge(user, hoge)
raise unless user.class == User
user.hoge = hoge
user.update!
end

みたいな感じで。
動的言語としてのRubyの性質やらを考えると、型チェックはしないのが普通なのかなとは思うのですが
記述ミスで、このメソッドを hoge(employ) とコールしてしまった場合
(userインスタンスでなく、employインスタンスを渡してしまった)に、
Employクラスにも、たまたま hoge属性があったら
エラーが起こらず そのまま通ってしまう場合が恐ろしく感じるのです
しかもテストでは比較的、発見しづらいミスだとも思います
0191nobodyさん2013/03/21(木) 07:20:26.19ID:???
ユーザクラスのメソッドにしてください。
0192nobodyさん2013/03/21(木) 11:56:46.92ID:???
やっぱり業務で使われるのはrailsが多いですか?シナトラは趣味でしか使われないですか?
0193nobodyさん2013/03/21(木) 14:23:23.88ID:???
railsが多いのは事実だけど、シナトラも法人サイトで多数採用されてる wikiをみてみそ
ttp://ja.wikipedia.org/wiki/Sinatra
0194nobodyさん2013/03/21(木) 15:28:25.25ID:NjlQYcmr
http://www.sinatrarb.com/wild.html
0195nobodyさん2013/03/21(木) 19:02:43.03ID:NjlQYcmr
https://speakerdeck.com/mrkn/what-a-hard-work-to-make-the-recipe-sharing-service-available-on-ruby-1-dot-9-3
0196nobodyさん2013/03/21(木) 23:15:13.47ID:???
railsほど大仰なのはいらないけど、管理画面が欲しい程度だとpadrino使われるらしいな
0197nobodyさん2013/03/22(金) 07:04:33.80ID:XkfKnkyP
http://twitter.com/cat/status/314258065430044673
https://twitter.com/cat/status/314257831148797952

https://github.com/re4k
http://whois.ansi.co.jp/re4k.info
0198nobodyさん2013/03/22(金) 07:43:54.20ID:XkfKnkyP
https://twitter.com/cat/status/314721165270732802
https://twitter.com/cat/status/314716260250296320
0199nobodyさん2013/03/22(金) 08:34:30.49ID:???
Rails は初めてなんですが、最近どういう構成で運用するのが

nginx + passenger + rails ですか?

ちなみに、passenger が何者で、何してるものなのか、なんで必要なのかが分からず聞いてますw
0200nobodyさん2013/03/22(金) 09:31:55.23ID:???
MAC address
0201nobodyさん2013/03/22(金) 15:37:55.54ID:???
scopeについて調べていたのですが、解説としてこのようなコードが有りました。

class User < ActiveRecord::Base
scope :search, lambda { |name|
where("name = ?", "#{name}")
}
end

where("name = ?", "#{name}") についてnameではなく"#{name}"とするのはなにか理由が在るのでしょうか?
0202nobodyさん2013/03/22(金) 17:18:45.30ID:yxqAW8Yf
Firefox22が「asm.js」採用へ、JavaScriptがネイティブアプリに近い実行速度まで高速化 - GIGAZINE
http://gigazine.net/news/20130322-firefox-asmjs/
0203nobodyさん2013/03/22(金) 21:09:41.00ID:ifwMXc/i
>>201

どこの記事/本よ?

to_sした結果を使いたい、くらいしか想像つかん。
0204nobodyさん2013/03/22(金) 21:16:33.75ID:???
"name like ?", "%#{name}%"
これを修正した
0205nobodyさん2013/03/27(水) 00:04:40.50ID:A67zM3ce
http://www.slideshare.net/11ro_yamasaki/ruby2013
0206nobodyさん2013/03/28(木) 15:34:50.42ID:???
Rails製のWikiシステムでおすすめありませんか?
wiki on railsとかはあったんですがフルすぎて……
0207nobodyさん2013/03/28(木) 16:48:31.04ID:???
そういう完成下のがほしいのなら
Railsじゃないほうがいいんじゃないかな
無理してRailsを使わんでもええんよ
0208あ2013/03/28(木) 17:36:34.38ID:???
https://www.ruby-toolbox.com/categories/wiki_apps

https://www.ruby-toolbox.com/#Content_Management_Blogging
0209nobodyさん2013/03/28(木) 18:53:16.42ID:???
たぶん システムの一部にWikiの機能がある、みたいな要件で
モジュール化されたWikiシステムが欲しいんだろう
俺も欲しい 誰か作って
0210nobodyさん2013/03/31(日) 12:01:34.56ID:2aEijAQl
「Herokuにだまされた」――新興企業の指摘にHerokuが謝罪

Ruby on RailsのPaaS「Heroku」の課金の仕組みをめぐり、新興のネット企業が
「Herokuにだまされた」と訴えた。これに対しHerokuは2月15日、顧客に対する
説明が不十分だったと問題を認め、改善に努めると表明している。
http://www.atmarkit.co.jp/ait/articles/1302/15/news090.html

Herokuって、恐ろしいよな
0211nobodyさん2013/03/31(日) 14:58:17.68ID:???
>>210
https://twitter.com/bulkneets/status/304801081182023680
0212nobodyさん2013/03/31(日) 15:30:32.44ID:???
>>211
なんだかややこしすぎてよくわからなかったけど、
それほど悪質なケースとは思わないな。
これをきっかけにengine yardとかに流れた人もいるかもしれないが。
サービスが改善すれば、herokuを使い続ける人もいるんじゃない?

いずれにしても、記事を鵜呑みにするのは止めた方がいい。
0213nobodyさん2013/03/31(日) 15:51:20.56ID:???
へろくさん、なんでガンダムなんですか?
0214nobodyさん2013/03/31(日) 18:39:40.13ID:???
一ヶ月委譲前の話を今更
0215nobodyさん2013/03/31(日) 18:41:31.53ID:Mf8yJZR4
さっき知ったんだろ。いじめてやるなよ。
0216nobodyさん2013/04/01(月) 08:34:23.82ID:???
変わったんだ?
0217nobodyさん2013/04/02(火) 14:42:59.94ID:/GCXEF4a
https://twitter.com/cn/status/318936980937388032
0218nobodyさん2013/04/02(火) 18:43:59.06ID:???
http://twitter.com/cat/status/314258065430044673
https://twitter.com/cat/status/314257831148797952

https://github.com/re4k
http://whois.ansi.co.jp/re4k.info
0219nobodyさん2013/04/03(水) 01:03:50.57ID:gvIwbNbw
acts_as_taggable、またはacts_as_taggable_on_steroidsを使ってる人いる?
日本語特有の問題でどうしても分からないことがあります。

taggingsテーブル・・・対象モデルの対象レコードにどのタグがついているか?のレコード
tagsテーブル・・・タグのマスタテーブル

から構成されているんだけど

例えばtagsに

プロジェクトX
プロジェクトX
プロジェクト�]

と3種類の既存タグレコードがあったとします。
このとき、
videosモデルのレコードに「プロジェクトX」のタグをつけ保存しようとすると
「プロジェクトX」だけではなく他の2つ
「プロジェクトX」
「プロジェクト�]」
まで自動的に作られてしまいます。なお保存可能タグの件数を1件とvalidationで指定していたとしても
それを無視してこの3つが作られ保存されてしまいます。

この問題の原因や解決方法が分かる方はいませんか?
0220nobodyさん2013/04/03(水) 10:59:16.17ID:???
>>219
https://github.com/mbleigh/acts-as-taggable-on/blob/master/lib/acts_as_taggable_on/tag.rb
def self.named(name)
 if ActsAsTaggableOn.strict_case_match
  where(["name = #{binary}?", name])
 else
  where(["lower(name) = ?", name.downcase])
 end
end

def self.named_any(list)
 if ActsAsTaggableOn.strict_case_match
  where(list.map { |tag| sanitize_sql(["name = #{binary}?", tag.to_s.mb_chars]) }.join(" OR "))
 else
  where(list.map { |tag| sanitize_sql(["lower(name) = ?", tag.to_s.mb_chars.downcase]) }.join(" OR "))
 end
end

ここでlowerしているからXとxとXの差が吸収されてる。このlowerを外せばいけますよ
gemをカスタマイズして使う方法は分かりますか?
0221nobodyさん2013/04/03(水) 11:06:11.03ID:???
>>220
ご丁寧にありがとうございます。
すみません、gemのカスタマイズ方法については分かりません
もし良ければ教えていただけませんか?
gem install acts_as_taggable_on_steroids
を実行しただけです。
0222nobodyさん2013/04/03(水) 11:10:41.90ID:???
>>221
$cd rails_project
$mkdir plugins
$cd plugins
$git clone https://github.com/mbleigh/acts-as-taggable-on.git

あとはその中のファイルをいじって
$cd plugins/acts-as-taggable-on/lib/acts_as_taggable_on/
$vim tag.rb

でさっき書いた該当箇所の
lower(name)をnameに書き換えます

その後Gemfileに
gem "acts-as-taggable-on", path: "plugins/acts-as-taggable-on"
と読み込み元を指定してやればおkです
0223nobodyさん2013/04/03(水) 14:10:03.33ID:???
>>222
大変ご丁寧にわざわざありがとうございます。

それに付随して1つ質問よろしいでしょうか?


�@gem install acts_as_taggable_on_steroids
の際に出来たディレクトリをそのままコピーして
mkdirで作られたpluginsディレクトリの中に突っ込むのはOKですか?

git cloneで吸い出したバージョンと今使ってるバージョンの相違も考えられますので。

ありがとうございます。
0224nobodyさん2013/04/03(水) 14:38:15.31ID:???
>>223
gemファイルってただのzipファイルなのでそれでも大丈夫だと思います
0225nobodyさん2013/04/03(水) 15:31:27.57ID:???
>>224
ありがとうございます

試しに
/usr/local/lib/ruby/gems/1.9.1/gems/acts-as-taggable-on-2.3.3/lib/acts_as_taggable_on/tag.rb

の中の二カ所をlower(name)→name
へ書き換え
サーバーの再起動をかけましたが
結果は同じようにタグ1つのはずが
やはり3つ(3種類)になって保存されてしまいます。

gem list したときに使用バージョンも確認してるので
修正すべきファイルは
そのディレクトリのそのファイルで間違いないと思うのですが。。。。

他に何か考えられそうなことはありますか?
0226nobodyさん2013/04/03(水) 15:46:03.99ID:???
>>225
Gemfileでpath=...
は設定していますか?
0227nobodyさん2013/04/03(水) 15:46:32.92ID:???
>>225
ログ吐かせるなどして
> 修正すべきファイルは
> そのディレクトリのそのファイルで間違いないと思うのですが。。。。
これが合ってるかどうか確認
まずはそこからだ
0228nobodyさん2013/04/03(水) 15:49:54.33ID:???
>>226
あ、説明不足ですみません

gemディレクトリのコピーはせず
オリジナルのほうを弄っています

このgemだけプロジェクトのpluginディレクトリに入れるのは違和感があったので。

オリジナルのほうを弄ったのに
変化なしということで驚きです。
0229nobodyさん2013/04/03(水) 15:51:50.97ID:ITuk1zhr
お知らせ

市原警察署の生活安全課の帰化人創価警官の指導の元、
入学式から2週間ほど、在日の創価学会員を主体とした自称防犯パトロールが、
2週間ほど行われることになりました

生活安全課の指導であることと、パトロールであることは、
絶対に公言してはいけないとの指導も、帰化人創価警官より出ています

期間中は2人組の在日の創価学会員が、頻繁に創価批判者の自宅周辺を、
うろつき回ると思われます
日本人の方は、充分に注意してください
0230nobodyさん2013/04/03(水) 16:08:07.00ID:???
教えてもらってもアドバイスされた通りに作業せずに勝手に作業して出来ません!って・・・
まずは教えられた通りにやってから自分でやりたいようにいじればいいじゃん・・・
0231nobodyさん2013/04/03(水) 20:42:27.38ID:gvIwbNbw
>>226
教えていただいたとおりにやってみましたが
結果はやはり同じで、1つでなくタグが強制的に3つ(3種類)で保存されてしまいます。
gem 'rails3-jquery-autocomplete'も使用しているのですが関係あるのでしょうか?

>>230
すみません>_<
0232nobodyさん2013/04/03(水) 23:22:33.09ID:???
必ずバージョンを指定しないと下記のようなメッセージが出てbundle installでこけます。
http://fujitaiju.com/blog/technology/ruby/rubyローカルのgemをgemfileに書いてbundle-installするのにハマった/
0233nobodyさん2013/04/04(木) 19:14:22.06ID:On+3VEul
https://twitter.com/search?q=%23herokujp&;src=hash
0234nobodyさん2013/04/05(金) 02:55:29.01ID:???
Heroku | Heroku Postgres Databases Patched
https://blog.heroku.com/archives/2013/4/4/heroku_postgres_databases_patched

PostgreSQL: 2013-04-04 Security Release FAQ
Who discovered the vulnerability?
Mitsumasa Kondo and Kyotaro Horiguchi of NTT Open Source Software Center
http://www.postgresql.org/support/security/faq/2013-04-04/
0235nobodyさん2013/04/05(金) 04:42:38.03ID:???
>>226さん、>>231をどうかお願いします
0236nobodyさん2013/04/05(金) 08:45:50.06ID:???
>>235
自分で問題切り分けぐらいやったらどうだい?
0237nobodyさん2013/04/05(金) 14:44:58.54ID:???
>>236
教えていただいた通りにやってみたんですが結果は同じでした。
修正箇所のlower()が影響していなかったのかなと思います。

バリデーションでタグの数を2つまでと指定していても、
それを無視して3つ(3種類のprojectx)で問題なく保存されてしまいます。

残念ながら自分の力では原因を探し出せません。
0238nobodyさん2013/04/05(金) 14:50:44.00ID:???
>>237
そんなときは以下の手を使うのだ

a. 原因を探せるスキルを身につける
b. お金を払ってプロにお願いする
c. gem を使うのをやめて自分で実装する
d. あきらめる

少なくともこんなとこで教えてクンをやってる場合ではない
0239nobodyさん2013/04/05(金) 16:19:07.81ID:???
>>237
素直に諦めろ
こんなところに原因究明できるようなレベルのやつがいると思うか?
0240nobodyさん2013/04/05(金) 16:22:38.29ID:???
>>237
皆優しいから遠回しに言ってるが、
要するに教えてちゃんは目障り
0241nobodyさん2013/04/05(金) 17:17:52.19ID:???
>>238
>>239
>>240
ありがとうございました。
素直に諦めます。
0242nobodyさん2013/04/05(金) 17:26:04.37ID:???
>>241
ばーか
教えてクンは死ね!!!!
氏ねじゃなくて死ね!!!
お前にRoRを覚える資格なんて無い
阿呆は算数ドリルでもやってろ

このスレでは教えてクンの質問禁止なんだよ
わかる????
0243nobodyさん2013/04/05(金) 17:27:51.33ID:???
>>222がバカみたいに丁寧に教えるのが悪い
質問してくるやつは罵るか無視しろよ
カス
ここでは質問禁止
0244nobodyさん2013/04/05(金) 18:32:54.58ID:???
bundle install をした際、gems以下に入るgemからtestディレクトリが抜かれるのはbundlerの仕様?
0245nobodyさん2013/04/05(金) 18:39:22.74ID:???
めっけた。これだ

http://nithinbekal.com/2011/writing-ruby-gems-part-4-setting-up-testunit/

bundlerというか、gem制作者が決めるのね。
0246nobodyさん2013/04/05(金) 22:23:10.88ID:???
>>243
質問禁止とか、べつにお前が決めることじゃないだろう。
もちろん、限度っつうもんはあると思うが。

あと、最近はRoRとか略さんと思うぞ。Railsじゃない?
みんなはどう略してる?
0247nobodyさん2013/04/05(金) 23:35:00.72ID:???
>>246
質問厨の教えてクンは例外なく排除すべき。
このスレのレベルを下げるだけ。

このスレではある程度のレベルの知見を持った崇高なRailerだけがカキコしてもいい。
このスレを立てた俺が言うんだから間違いない。

ぽっと出のお前にルールを語る権利はない!
0248nobodyさん2013/04/05(金) 23:36:17.95ID:???
ルールとかはどうでもいいけど、大勢が決してから尻馬にのって出てくるのはカッコ悪い
役に立たないし
0249nobodyさん2013/04/06(土) 00:05:14.74ID:???
>>248
さてやお前 教えてクンだな?
0250nobodyさん2013/04/06(土) 00:15:18.77ID:???
スレを立てたのはオレだって、どうやって証明するんだよw
スレの私物化カコワルいぞw
0251nobodyさん2013/04/06(土) 00:19:46.36ID:???
>>250
教えてクンうぜぇよ
0252nobodyさん2013/04/09(火) 10:46:32.30ID:gddINA+i
868 :名無しさん@お腹いっぱい。:2012/09/27(木) 21:43:00.60 0
プロセスが落ちてない
(プロセス監視
OSがリソース不足でない
(リソース監視
サーバ内の監視処理が落ちてない
(監視処理が実行されるのを死活監視
サーバが落ちてない
(Pingで監視

ネットワークが落ちてない
(SWの監視

監視サーバが落ちてない
(Ping
監視サーバのOSがリソース不足でない
(リソース監視
監視処理が落ちてない
(監視処理が実行されるのを監視

くらいをお互いのサーバでやって、外のPingでの死活監視サービスで2台監視
2台のサーバは別の場所設置
ユーザーの不具合報告先あればなおいい

くらいやればいいじゃない
そんな重要ならね
0253nobodyさん2013/04/09(火) 10:48:51.29ID:gddINA+i
マスタ/スレーブの冗長化の基本は4台1セット
http://d.hatena.ne.jp/uncafe/20110919

データベースのレプリケーション(複製)では、slaveに最低3台のサーバを適用している。
http://jibun.atmarkit.co.jp/ad/comp/112mitsu/01.html

MySQLをmaster:slave=1:1構成にして参照をslaveに向けるのがなぜ良くないか - 酒日記 はてな支店
http://d.hatena.ne.jp/sfujiwara/20110620/1308531677

MySQLで参照の負荷分散を行うslaveは3台から構成するのがよいのでは - 酒日記 はてな支店
http://d.hatena.ne.jp/sfujiwara/20110621/1308625519
0254nobodyさん2013/04/10(水) 02:58:15.87ID:TQWYty72
監視サーバーの監視はどうするんですか?
http://osamunmun.blogspot.jp/2013/04/engineyard-engine-yard-cloud.html
0255nobodyさん2013/04/11(木) 02:35:13.72ID:nXmIbIzR
https://twitter.com/mallowlabs/status/321968756924481536
0256nobodyさん2013/04/12(金) 06:43:55.35ID:w1iWotdB
「アジャイルがダメだと思う7つの理由」から始まったアジャイル論争の現時点のまとめ − Publickey
http://www.publickey1.jp/blog/13/7_3.html
0257nobodyさん2013/04/12(金) 14:25:37.02ID:w1iWotdB
DNSフェイルオーバーとAmazon S3のウェブサイトホスティング機能を組み合わせることで、バックアップウェブサイトをデプロイするための
シンプルで、低コストで、信頼性の高い方法を実現できます。
もちろん、誰も自分のサイトがダウンすることを望んでいませんが、
よくないコードのデプロイ、ネットワークの停止などが原因でどうしても停止してしまうことがあります。

http://aws.typepad.com/aws_japan/2013/02/create-a-backup-website-using-route-53-dns-failover-and-s3-website-hosting-.html
0258a2013/04/14(日) 10:23:55.84ID:???
Amazonクラウド、2テラバイトのSSD、60GBメモリ搭載で12万IOPSを実現するインスタンスを発表 − Publickey
http://www.publickey1.jp/blog/12/amazon2ssd60gb12iops.html

Amazonクラウド、244GBメモリとCPUの温度限界まで性能を引き出す超高性能なインスタンス開始 − Publickey
http://www.publickey1.jp/blog/13/amazon244gbcpu.html

ASCII.jp:AWSに「35ECUs」117GBメモリの「ハイストレージインスタンス」
http://ascii.jp/elem/000/000/754/754315/

【AWS発表】EC2に48TBのインスタンスストレージを持つ、ハイストレージインスタンスファミリーが登場! - Amazon Web Services ブログ
http://aws.typepad.com/aws_japan/2012/12/the-new-ec2-high-storage-instance-family.html
0259nobodyさん2013/04/14(日) 20:21:11.50ID:???
iPhoneアプリ. Windowsアプリを売って生き残れ Ver 1.7 リンク数61
Http://qr. net/kh4y
0260あ2013/04/15(月) 13:55:28.96ID:???
格安ルーターの裏にあるもの - 記者の眼:ITpro
http://itpro.nikkeibp.co.jp/article/Watcher/20100827/351525/

自作サーバカンファレンス
http://el.jibun.atmarkit.co.jp/rakuten/2009/12/post-aae3.html

ランニングコストは家賃が15万円、回線費用が5万円、電気代が20万円で、合計の月額費用は40万円。年間に換算すると480万円で、
当初の2880万円から大幅なコスト削減を実現した。
http://bb.watch.impress.co.jp/docs/news/20091126_331459.html

Linuxの導入を後押しするx86サーバーの進化 - 記者の眼:ITpro
http://itpro.nikkeibp.co.jp/article/Watcher/20100729/350800/
最大8個のプロセッサ(64コア)がメモリー空間を共有してトランザクションを処理するSMP(対称型マルチプロセッシング)構成をとれる点だ。

Xeon 7500番台搭載サーバーだ。あるサーバーメーカーの担当者は
「Xeon 7500番台を8個接続した場合、国内のデータベースであれば、ほぼどんなものでも動かせるだけの処理能力がある」と話す。

スケールアウトからスケールアップへの回帰:江島健太郎 / Kenn’s Clairvoyance - CNET Japan
http://b.hatena.ne.jp/entry/japan.cnet.com/blog/kenn/2010/01/12/entry_27036420/
0261nobodyさん2013/04/18(木) 01:30:43.97ID:???
先輩方に教えを請いたく思い書き込みさせていただきます。

現在、Gemfileに使用gemをバージョン指定して
羅列しております。

これを将来的(仮に10年後)に別サーバーで
同じgemらを使いたいときに
このGemfileを使い回し、
bundle installしたときに
特定のgemが使えなくなっている可能性はありますでしょうか?

bundle installを実行すると
おそらく、rubygem.orgにgemの存在を確認しにいって
存在していれば、そこからダウンロードする仕組みになっていますよね?

バージョンによっては将来、非公開になっている可能性かあるのかも?と感じましたので。。。

現在のRuby on Rails 3.2.12や
それに付随するgemらの相性がいいので
将来的にも使い回ししていきたいのですが
何かいい方法はありますか?

テンプレートとしてRailsのappフォルダごと取っておきたいです
もし、その中にgemも格納しておけるなら
それがベストですね。
vendor/pluginのフォルダに使用するgemを入れるとかなのでしょうか?
0262nobodyさん2013/04/18(木) 01:49:55.04ID:???
>>261
gemが非公開になる可能性は勿論ある

そして、gemをbundle installする場合は

bundle install --path=plugins/gems
とかってやればそこに保存できて読みに行くのもそこからになる
0263nobodyさん2013/04/18(木) 01:52:18.83ID:???
ああ読み違い
vendorの中にgemsフォルダでも作って、そこにつかいたいバージョンのgemをクローンしてくる

cd vendor/gems/
git clone ....

Gemfileに

gem 'haml-rails', path: "vendor/gems/haml-rails"
みたいに書けばそこから読んでくれるからGemfileとappとvendor全部ひとまとめにしておけば目的のことは出来るんじゃないかと
0264nobodyさん2013/04/18(木) 02:31:42.04ID:???
macのfirefoxでバージョンアップと共に
css確認用のスタイルエディタが強制的に
下に表示されるようになって使いづらすぎる

前のように右表示に戻してくれ!

死にたい
0265nobodyさん2013/04/18(木) 08:11:25.75ID:R9I0aC4Y
>>261

なくなる可能性はあるので、心配なら
bundle help package どぞー
0266nobodyさん2013/04/18(木) 13:29:33.99ID:???
>>262
>>263
>>265


今はシステムにあるgemを読み込んでいるんですが

$ bundle install --path vendor/bundle

とするだけで
railsアプリのvendor/bundleフォルダー内に
使用中のgemが全部格納され
今後はシステムのgemを読みにいかない


この理解であっていますか?

これなら今後はこのrailsアプリとsqlデータだけバックアップをとっておいて

別サーバーへ移行するときも
特定のバージョンのruby, mysql server, apache, passengerなどの最低限のセットアップだけして

バックアップしておいたフォルダを配置するだけで動き出す
という認識であっていますか?
0267nobodyさん2013/04/18(木) 13:38:29.02ID:???
>>266
まずやってみてはどうかな?
やってみてうまく動かなかったらそこで質問するべきだろう
0268nobodyさん2013/04/18(木) 19:23:34.57ID:???
>>267
ありがとうございます。
やってみたところ無事にvendor/bundle内にgemが入りました

ここで一点最後に教えてください
このアプリが本当にそこからgemを読み込んでいるのか?
それともシステム内のgemから読み込んでいるのかを確認する方法はありますか?
0269nobodyさん2013/04/18(木) 20:44:29.92ID:???
>>268
md5
0270nobodyさん2013/04/18(木) 21:12:48.74ID:alRkor99
◆じゃあのさん新人公演◆
開演時間 未定

231:以下、名無しにかわりましてVIPがお送りします[sage]
2013/04/18(木) 16:08:20.57 ID:1BeWLVki0
グッドアフタヌーンおまいらwwwww

なんかよぉ、パンダデモに妨害めいた嫌がらせがあったらしいんだわwwwww
ものすごく間抜けな嫌がらせなんだけどなwwww

今晩それの詳細を落としに来るわ。じゃあのwww

--- 以下スレ情報 ---
高岡さんがフジ韓流ゴリ押し批判したら干されたのでウジテレビ凸
http://hayabusa.2ch.net/test/read.cgi/news4vip/1366222344/
0271nobodyさん2013/04/18(木) 22:10:54.95ID:R9I0aC4Y
>>268
bundle console or rails console して $: を見てみよう。
0272nobodyさん2013/04/19(金) 18:25:09.42ID:???
action mailerとかで複数ユーザー(仮に1万人)に同じ内容のメールを一括送信するときは


each doでループを回しながら処理するの?
それともBCCみたいなものに送信先をまとめた送信先を渡して一回で処理するの?

大手SNSとかどういうふうに処理してるんだろうか
0273nobodyさん2013/04/19(金) 18:28:53.78ID:???
>>272
フツーBCCじゃない?
each doで1万人もやってたらSMTPサーバーの負荷も含めていろいろ大変なような……。
0274あ2013/04/19(金) 20:12:44.92ID:???
メール 1 通あたりの宛先数 1 通のメールの [To]、[Cc]、[Bcc] 欄のアドレス数* 2,000(外部の場合は 500)件
http://support.google.com/a/bin/answer.py?hl=ja&;answer=166852
0275nobodyさん2013/04/19(金) 22:33:10.52ID:???
>>273
>>274

ありがとうございます。
仮に1万件の送信先があったとして
BCCってうまく動くのかな?

そして、そのBCCの送信先やTOの送信先がエラー配信になる場合でも
残りの人たちにはちゃんと送られるのかな?
0276nobodyさん2013/04/19(金) 23:03:42.00ID:???
>>275
Toは自分のアドレスにするといいよ
BCCは途中で送れない人がいても問題ない
0277nobodyさん2013/04/19(金) 23:33:14.17ID:heMxtl43
Sendgrid vs Postmark vs Amazon SES and other email/SMTP API providers?
http://stackoverflow.com/questions/4798141/sendgrid-vs-postmark-vs-amazon-ses-and-other-email-smtp-api-providers

http://aws.amazon.com/jp/ses/#pricing
0278あ2013/04/19(金) 23:37:54.07ID:???
Amazon、大量メール送信のためのクラウドサービス「Amazon SES」開始 - クラウド Watch
利用料金は1000通につき0.10ドル
http://cloud.watch.impress.co.jp/docs/news/20110126_422702.html

フレクト CTOのブログ: Amazon SESとメール配信の難しさについて調べたこと
http://blog.flect.co.jp/cto/2011/08/amazon-ses-430f.html
0279あ2013/04/19(金) 23:44:29.02ID:???
suz-lab - blog: SESの利用料金(月間30万通&300万通)
http://blog.suz-lab.com/2011/05/ses30.html

【AWS発表】 Amazon Simple Email Serviceの発表 - Amazon Web Services ブログ
Eメールのプロフェッショナルが使う指標に、Deliverability(配達到達品質)という指標があります。
これは、Eメールを送った際に実際にどれくらい受取先に届けることができたかという指標です。
Deliverabilityを最大化するには、複数のInternet Service Providers (ISPs)とこちら側のコンテンツを信頼してもらえるように協業する必要があり、
沢山のエラーメールやバウンスメールを監視しコントロールする必要があります。
内部のハードウェアに時間とお金を費やし、
http://aws.typepad.com/aws_japan/2011/01/introducing-the-amazon-simple-email-service.html
0280nobodyさん2013/04/19(金) 23:48:00.84ID:???
スパムアズアサービスwww
0281nobodyさん2013/04/20(土) 03:34:01.73ID:???
>>276
ありがとうございます。

sendgridやら
amazon sesとありますが

VPSで10万人規模会員を相手にするなら
アクションメーラーで十分ですよね?

マックス毎日のメール件数が10万件程度だと仮定して
0282nobodyさん2013/04/20(土) 03:35:04.03ID:???
>>280
SaSと掛けてるのねwwwwwww
今年一番笑わせてもらいました
普通にSNS運用用途ですよ
0283nobodyさん2013/04/20(土) 06:33:59.79ID:???
gemで

各ページごとのアクセス件数を計ってくれるようなものない?

同一アクセス元のカウントは1として
カウントしていって保存していってくれるような。
0284nobodyさん2013/04/20(土) 06:43:49.50ID:???
>>283ですが
https://github.com/charlotte-ruby/impressionist
とか見つけましたけど
これってuser_idカラムが何故必要なのでしょうか?

会員制が前提なら分かりますが
会員じゃない人も見たときに
ここはnullになってしまい
うまく動かなくなりますよね?
0285nobodyさん2013/04/20(土) 08:05:28.12ID:???
>>284
> うまく動かなくなりますよね?
それぐらい自分で試せよ
試して動かなかったらあらためて質問すりゃいいじゃないか
0286nobodyさん2013/04/22(月) 00:13:26.47ID:gZjtBCWR
こんばんは

Rails3.2.12を使っています。
session[:hoge] = 'aaa'
として設定したsessionがブラウザを閉じても消えません。
firebugでセッションキー_myapp_sessionというクッキーを見つけて削除してやると、ちゃんとsessionも消えるようです。
session関連の設定はデフォルトから弄っていません。
原因分かる方がいましたら教えていただけないでしょうか。
0287nobodyさん2013/04/22(月) 00:20:21.11ID:???
質問させてください

YouTubeやニコニコ動画などは再生可能なサムネイルを
出力できますが、
ニコ生放送は再生可能なサムネイルを貼り付けることは出来ますか?
0288nobodyさん2013/04/22(月) 01:45:48.91ID:???
なんでこのスレで聞いたの?
0289nobodyさん2013/04/22(月) 17:06:55.84ID:???
>>286
単純にブラウザを閉じただけではセッション終了にならないからだと思われ
0290あ2013/04/22(月) 19:32:38.24ID:???
http://guides.rubyonrails.org/security.html#session-expiry

http://stackoverflow.com/questions/2405635/how-to-empty-destroy-a-session-in-rails
http://stackoverflow.com/questions/3074292/how-would-i-clear-all-rails-sessions
0291nobodyさん2013/04/22(月) 23:59:12.91ID:gZjtBCWR
レスありがとうございます。
sessionの有効期限はブラウザを閉じるまでと思い込んでいましたが、そうではないということでしょうか?
自分が勉強している書籍にも
「セッションの有効期限は、デフォルトでブラウザが閉じるまで」とはっきり書いてあり
ブラウザを1度閉じるとセッションが消えるサンプルまで載ってます。
Ruby on Rails3アプリケーションプログラミング という本です。

自分で手を動かしてもブラウザ閉じるだけではセッション消えないので
この書籍が間違っている、ということなら全てすっきりするのですが。
0292nobodyさん2013/04/23(火) 11:23:23.49ID:???
「デフォルトで」って濁してるわけで書籍が間違ってるとまでは言えないと思うが
実際にやってみてセッションが消えないならそういうことだろ
0293あ2013/04/23(火) 13:07:00.92ID:???
タブブラウザにおけるセッションについて - PHPプロ!Q&A掲示板
http://www.phppro.jp/qa/1035
0294nobodyさん2013/04/23(火) 20:36:52.87ID:PIjz8ypW
MacでWindowを閉じただけでアプリを終了してなかったりして。
0295nobodyさん2013/04/23(火) 20:54:29.34ID:gjFGMEHK
Macの疑問 基本編 [アプリケーションの終了] ウインドウを閉じてもアプリケーションが終了しない! - できるネット+(できるネットプラス)
http://dekiru.impress.co.jp/contents/013/01310.htm
0296nobodyさん2013/04/24(水) 03:57:26.08ID:???
オブジェクト思考ってカッコつけていうけど、
単にリレーションが組まれたレコードに命名してるだけなんだなwwwwww

なんで本とかでは難しそうに力説してんの?
0297nobodyさん2013/04/24(水) 08:52:37.12ID:???
>>296
オブジェクト指向をなんら理解してないというのは分かった
0298nobodyさん2013/04/24(水) 10:22:39.81ID:???
>>296
ActiveRecordのこと言ってます?
0299nobodyさん2013/04/24(水) 12:37:12.83ID:???
>>297
あってるやろ?

>>298
はい
0300nobodyさん2013/04/24(水) 15:53:45.39ID:???
>>299
あってない
>>296はORマッピングっていう機能の、それもごく一部の機能
オブジェクト指向の話ではない
0301nobodyさん2013/04/24(水) 16:02:17.59ID:???
よくみろ。
奴が言っているのはオブジェクト思考だ。
0302nobodyさん2013/04/24(水) 16:40:38.94ID:???
発想が逆だなオブジェクト指向ありきのActiveRecordだ
0303nobodyさん2013/04/24(水) 23:21:02.20ID:???
結局コントローラーに全部書くんですけどね
0304nobodyさん2013/04/25(木) 00:09:31.21ID:???
オブジェクト指向が分からない俺にも
分かるように説明できる人いますか?
0305nobodyさん2013/04/25(木) 08:32:36.13ID:???
構造体に関数がくっついたもの
0306nobodyさん2013/04/25(木) 12:35:13.15ID:bvm1rF9R
すいません、質問させてください。

ページを開くと自動的にjQueryが読み込まれ、
javascriptが周期的に動くという動作を組んでいて
問題なく動いていたのですが、それが急に動かなくなりました。

remoteのjsなどは問題なく動いているので、おそらくjQueryが怪しいかんじです。

コードも変えていないのになぜ急に動かなくなったかが不思議でなりません。
唯一思い当たるのであれば assetsのprecompileをかけたあたりから
動かなくなったような気がします。

HTMLソースを見ても問題なく以前同様にjQueryが直接記述されているのでコードの問題ではなさそうです。
以前は動作するとwebコンソールに表示されていたのも、全く空白で何も出てきません。
色々と試しているのですが、まだ動かないままです。

どこに問題があるかお分かりになる方がいらっしゃったら教えていただけませんでしょうか?
0307nobodyさん2013/04/25(木) 13:22:03.66ID:???
動かない、だけじゃエスパーじゃない限りどう動かないのか分からないぞ
0308nobodyさん2013/04/25(木) 13:36:05.72ID:bvm1rF9R
>>307
すみません。心あたりがprecompileやったあたりから動いてなかったっぽいというくらいしか思い当たらなくて、
何を探していけばいいかも検討がつきません。
コードは特に何も変えてはいません。
gemsはアプリフォルダ内のvendor/pluginsに格納しています。
assetsはpublic/assets/にprecompileされたファイルが無数はいっています。
0309nobodyさん2013/04/25(木) 14:39:31.54ID:???
precompileした後にdevelopment環境で動かなくなったということですか?
0310nobodyさん2013/04/25(木) 15:13:08.16ID:???
37signals
創業者のJason Fried[/Freed/]はもともとデザイナーだったが、
自分のブログにプログラムの質問をしたところDHHが答えたことから知り合って現在に至っています。
社員14人で100万人のユーザ
http://suzukimilanpaak.blogspot.jp/2009/10/blog-post_395.html
0311nobodyさん2013/04/25(木) 17:10:23.15ID:bvm1rF9R
>>309
precompileした後にproduction環境でjQueryが動かなくなりました
bundle install --path="vendor/plugins" をしたのがまずかったのでしょうか?

ちなみに
bundle exec rake assets:precompile RAILS_ENV=production を実行すると
このメッセージも出てきます

/usr/local/bin/ruby /var/www/html/sampleapp/vendor/plugins/ruby/1.9.1/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0.
Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb.
See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /var/www/html/sampleapp/Rakefile:7)
0312nobodyさん2013/04/25(木) 23:36:48.26ID:bvm1rF9R
やはり色んな事を試しましたが、precompileを実施するとjQueryが動かなくなりますね・・・
cssの修正の必要がある場合は、スマートではないですが仕方なくview内に書くことにします >_<
0313nobodyさん2013/04/25(木) 23:48:06.99ID:???
http://stackoverflow.com/search?q=jquery+precompile
0314nobodyさん2013/04/26(金) 06:33:09.25ID:25J9N8NB
>>313
ありがとうございます。
色々と試しましたがどのケースも当てはまらないようです。。

まさかここにきてprecompileがまともに出来なくなるとは・・・
何が原因なのかも思いあたるのは
bundle install --path="vendor/plugins" をしたことくらいです。
その時にgem構成が狂ったとかで依存関係に問題が生じてこうなってしまったとかあり得ますか?
動かないのはjQueryだけです。
0315nobodyさん2013/04/26(金) 06:44:49.01ID:25J9N8NB
http://stackoverflow.com/questions/11070123/jquery-on-rails-not-working-in-production-on-heroku-cedar

こういうのを見てると、環境によっては意味不明で、かつ根本を解決できないようなprecompileとjQueryの問題があるようですね。
Railsで色々作っていると、コーディングや設計そのものより、こういった問題や、依存関係の問題に多く悩まされることが多いです>_<
とくにgemを多用していると。。
0316nobodyさん2013/04/26(金) 08:16:29.89ID:???
なんで vendor/plugin に gem を入れてるの?
普通は vendor/bundle だろ
0317nobodyさん2013/04/26(金) 08:16:43.52ID:NuWPE5v9
全く関係ないけど、 vendor/plugins は上で警告されているように
「プラグイン」形式のライブラリを置く場所で、将来プラグインは廃止
なので、bundle の--path には当面ほかの名前のパスを指定しよう。
ふつう vendor/bundle かな。
0318nobodyさん2013/04/26(金) 08:19:16.26ID:NuWPE5v9
朝イチでかぶるとか…
0319nobodyさん2013/04/26(金) 08:47:48.94ID:???
>>316
>>317

ありがとうございます。

bundle install --path='vendor/plugins'
を実行する前までは所定のgemの格納場所から読み込まれていました。

その以前の状態に戻すにはどうすればいいでしょうか?

前の状態に戻せたとして
それでもまだprecompile後にjQueryが動かないなら
本当に一切の検討がつきません。
0320nobodyさん2013/04/26(金) 10:01:59.67ID:???
>>319
> 前の状態に戻せたとして
> それでもまだprecompile後にjQueryが動かないなら
試してから書けよ…
0321nobodyさん2013/04/26(金) 10:25:06.62ID:???
誰か、いいかげんrmコマンドを教えてあげたら?
何でも試しそうだし
0322nobodyさん2013/04/27(土) 02:32:39.07ID:???
$ sudo rm -rf /
0323nobodyさん2013/04/27(土) 08:31:26.84ID:???
現在Rails3.2を使っています
ruby2.0へ載せ替えって難なく出来ますか?
すごい早くなったと聞きました。
gemへの影響はありますよね?
0324nobodyさん2013/04/27(土) 08:41:24.74ID:0zxDcrd+
1.9 -> 2.0 はあまり手間ではない

1.8 -> 1.9 はCookpadのmrkn氏が興味深い発表をしていたけど、
ああこれだ。
https://speakerdeck.com/mrkn/what-a-hard-work-to-make-the-recipe-sharing-service-available-on-ruby-1-dot-9-3


1.9以降に未対応のgemがあったら苦労すると思う。
0325nobodyさん2013/04/28(日) 00:07:38.60ID:???
>>324
やっぱり速度は断然違ってきますか?
0326nobodyさん2013/04/28(日) 00:59:30.35ID:???
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/benchmark/rdoc/Benchmark.html
0327nobodyさん2013/04/28(日) 08:02:30.29ID:???
>>326
railsでの体感速度はどうですか?
0328nobodyさん2013/04/29(月) 10:24:33.57ID:???
>>327
体感で良いなら俺は早くなったと思うが・・・
保障はできないから実際自分で試すしかないのでは
0329nobodyさん2013/04/29(月) 11:35:38.69ID:???
>>328
どのくらい?倍?
0330nobodyさん2013/04/29(月) 14:53:27.94ID:???
うっぜ
0331nobodyさん2013/04/29(月) 15:19:31.84ID:???
いいから教えろ
0332nobodyさん2013/04/29(月) 15:27:05.56ID:???
7倍ぐらい
0333nobodyさん2013/04/29(月) 18:59:45.82ID:???
>>332
そんなの知ってた
0334nobodyさん2013/04/30(火) 12:53:34.72ID:???
assets/javascript配下に新しいjsファイルを追加してから
再度precompileをかけるとjQueryが使えなくなる。
これって自分だけ?なんでだろ
rails3.2です
0335あ2013/04/30(火) 19:04:01.74ID:???
app\assets\javascripts
0336あ2013/04/30(火) 19:09:18.40ID:???
以前にプリコンパイルされた古いアセットファイルが public/assets/ ディレクトリにずっと残ってしまいますので、毎回削除してからプリコンパイルした方がいいでしょう。
public/assets/ 内に直接ファイルを作成しないように気をつけてください。

$ rm -rf public/assets
$ rake assets:precompile
http://rails.hatenadiary.jp/entry/2013/03/03/125801
0337nobodyさん2013/05/01(水) 08:00:15.51ID:???
Announcing Lower Engine Yard Pricing: Starting at 5¢/hr! - Engine Yard Developer Blog | Engine Ya...
https://blog.engineyard.com/2013/announcing-lower-pricing

Web dynos cost $0.05/hour.
https://www.heroku.com/pricing

http://aws.amazon.com/jp/ec2/
0338nobodyさん2013/05/01(水) 08:13:38.55ID:T2D7vcwl
http://www.ec2instances.info/
http://ec2-cost.heroku.com/
http://aws.amazon.com/jp/ec2/pricing/
http://aws.amazon.com/jp/ec2/instance-types/
0339nobodyさん2013/05/01(水) 12:11:00.90ID:???
みんなpythonのdjangoにおいでよ。
みんなRoRに集まって僕らさみしいよ。
0340nobodyさん2013/05/02(木) 09:08:34.51ID:???
>>336
手動でAssetsディレクトリを削除してから
precompileを実施しても同じ結果でした。
pipelineが壊れてる?
0341nobodyさん2013/05/02(木) 10:02:35.18ID:???
>>340
「jQueryが動かない」ってどういう状態なのかまず調べたほうがいいんじゃないですか?
読み込まれてないから動かないのか、読み込まれてるけどエラーが出てて動かないのか
0342nobodyさん2013/05/02(木) 10:09:19.44ID:???
>>341
出力されるHTMLには
コンパイルされたassetファイルがちゃんと記述されていて
そのリンク先を見るとちゃんとjQueryもあります。

しかし、ブラウザ上でなぜか実行すらされず
もちろんwebコンソールに動作した形跡も残らないためエラーすら確認できない状態です。

プリコンパイルするまでは普通に動いていました。
0343nobodyさん2013/05/02(木) 11:13:50.66ID:FFgKG6u1
bundle exec rake assets:precompile RAILS_ENV=production
0344nobodyさん2013/05/02(木) 17:08:00.57ID:???
>>342
コンソールにjQueryとか打ってみればロードされてるかどうか分かるでしょう?
0345nobodyさん2013/05/03(金) 01:18:58.50ID:???
>>344
それがなぜかロードされてないんです
0346nobodyさん2013/05/04(土) 01:15:29.13ID:WZF+pM+j
Riding Rails: Rails 4.0: Release Candidate 1 released!
http://weblog.rubyonrails.org/2013/5/1/Rails-4-0-release-candidate-1/
0347nobodyさん2013/05/04(土) 18:02:55.39ID:???
たいして閲覧者いないのにRailsで公開しているサイトが急に重くなりました。
考えられる原因って何がありますか?

理由を究明する方法や簡易な解決手段ってありますか?
0348nobodyさん2013/05/04(土) 18:22:37.39ID:???
サーバー構成ぐらいは晒してもらわないと何も言いようが無い。
原因はアプリより普通はサーバーやDBだし。
0349nobodyさん2013/05/04(土) 19:28:15.18ID:???
>>348
ありがとうございます。

CentOS Linux 5.7
メモリ 1002.06 MB total, 964.16 MB used
バーチャルメモリ 1.95 GB total, 251.71 MB used
HDD 16.91 GB total, 9.75 GB used
Apache2.2.3
Passenger
MySQL

こんなかんじですね。


なぜか急に重くなりました.サーバーを再起動すると何もなかったかのようにサクサクに戻りました。
0350nobodyさん2013/05/04(土) 20:32:51.87ID:???
再起動して直ったなら変なソース書いてるのかもね。
重いSQL発行してるとか、無限ループ回してる処理があるとか。
再起動でリクエストが破棄されて軽くなる。
ログにはレスポンスタイムとかも出てるから、じっくりログ追えば分かるはず。
0351nobodyさん2013/05/04(土) 23:12:55.70ID:???
>>350
ありがとうございます

ログレベルをエラーにしているんですが
せめてinfoとかにしておくべきですか?
どんどんログが肥大化していっちゃうので^^;

誰かが変なリスクエストをすごい勢いで実行してる可能性とか考えられますか?
0352nobodyさん2013/05/04(土) 23:33:07.65ID:???
logrotate
0353nobodyさん2013/05/05(日) 00:13:57.59ID:???
>>352
神様ありがとう
0354nobodyさん2013/05/05(日) 06:56:57.17ID:+SgpDESE
994 :名無しさん@恐縮です:2013/05/05(日) 05:52:07.40 ID:+T5TJ88A0
事業には波がある
好調な時ってのは不調な時に備えるための準備期間
それをわからずに好調な波がずーっと続くと思ってしまう奴は転ぶ
0355nobodyさん2013/05/05(日) 20:55:34.41ID:???
Rails4はスピード結構上がってるんやな
早く安定版が出て移行したいわー
0356nobodyさん2013/05/05(日) 21:11:18.22ID:???
開発環境でのrails serverコマンドはもっさりのまま?
あれすごくイラつく
0357nobodyさん2013/05/05(日) 21:19:42.27ID:???
>>355
そんなに違う?


質問なんだけど

コントローラーでのコメントアウトは
#つければできるけど


ビューで下記5行をまるまる表示させないようにコメントアウトするには何か方法はありますか?

<% if 条件 %>
条件が真だったときの表示内容
<% end %>

こんにちは!テストです!
0358nobodyさん2013/05/05(日) 22:58:56.49ID:Vs+ZZ1Bk
post.datetime_at = ○○○○○○○
みたいなかんじで

その後にpost.save
を書いていないことで生まれる弊害ってありますか?
0359nobodyさん2013/05/05(日) 23:06:56.49ID:Vs+ZZ1Bk
.save が必要なら .saveだらけにならないかい?
0360nobodyさん2013/05/05(日) 23:22:25.20ID:???
>>357
webrickを使ったときはdevelopment,production共にパフォーマンス向上してた 特にdevelopmentが顕著
あくまで自分の環境下での話だけど
0361あ2013/05/06(月) 08:34:23.90ID:???
<% if false %>
コメントアウト
<% end %>
0362nobodyさん2013/05/06(月) 12:06:43.94ID:???
パーミッションについて質問


アプリフォルダの中の
フォルダ、ファイル全て
ftpuser01にしています。
というのも外部からftp接続して変更の上書きが出来るように
ftpの権限に全て合わせています。

これって好ましくない?

以前は全てrootにしてたんだけど
ftpソフトでの変更の上書きアップロードは出来ないし、
なぜかwebアプリ上でも画像がアップロードできなかったりしました。
0363nobodyさん2013/05/06(月) 13:08:33.58ID:???
自分でサーバ立てるのってなんか楽しそうだしスゴそうだよね?
サーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ハードウェアの多重化なんて必要?
企業で使うとかじゃなく個人的に細々と立てたサーバが攻撃されることなんて滅多にないよね?
攻撃が来るって言ったって大した数じゃないんでしょ?
攻撃されたって大したことは起きないんでしょ?
http://b.hatena.ne.jp/entry/tmaeda.s45.xrea.com/20041101.html

ITmedia エンタープライズ:自社サーバがフィッシングサイトに「踏み台化」されたら? (1/3)
また、電源を切ってしまうことも良い対応ではない。
オンメモリ上で稼働しているフィッシングサイトの場合は、電源を切ることによって、すべてのデータが消えてしまい、原因究明や対応に遅れなどが出ることも考えられるからだ。
 事実、フィッシングサイトを構成するツールの中には、後に証拠が残らないよう、すべてがオンメモリ上で動作するものがある。
このような場合、再起動や電源オフによって、メモリ上にあるすべてのプログラムやファイルが消え、事実や原因の確認が困難になる。
http://www.itmedia.co.jp/enterprise/articles/0603/17/news004.html
0364nobodyさん2013/05/06(月) 16:32:48.03ID:???
>>344
返事遅れてすみません

jQuery(document).ready(function () {
reloadCount();
});

と記述があったとき、ページが読み込まれた時にこれが実行されません。
Webコンソールに
reloadCount();
を打ち込んで実行させると問題なく動きます。
やはりjQueryだけが問題を起こしているように思えます。
何かいい方法はないものでしょうか?
0365nobodyさん2013/05/06(月) 16:34:04.96ID:???
ちなみに
/assets/javascripts/application.js はこんなかんじですね

//
//= require jquery
//= require jquery-ui
//= require twitter/bootstrap
//= require jquery_ujs
//= require jquery.ui.datepicker
//= require autocomplete-rails
0366nobodyさん2013/05/06(月) 20:12:40.81ID:???
どうしてもわからない所があるので質問させてください。

ドットインストールのRails講座を見ていて
http://dotinstall.com/lessons/basic_rails/6540

@post = Post.find(params[:id])
@comment = Post.find(params[:id]).comments.build

という記述が出てきて、何となく等価だと思ったので

@post = Post.find(params[:id])
@comment = @post.comments.build

に書き換えたのですが、そうするとdeviseを使って書いてるviewの comment.user.username の部分で
undefined method `username' for nil:NilClass のエラーが出てしまいました。

何故 @post.comments.build では comment に user が追加されないのでしょうか?

上記の2つの書き方は等価だと思っていたので
同じミスを他の所でしないために知りたいです。
0367nobodyさん2013/05/06(月) 21:17:10.21ID:???
@comment.user.usernameならどう?
0368nobodyさん2013/05/06(月) 22:35:03.71ID:???
>>367
あ、すいません
<% @post.comments.each do |comment| %>
の中でのエラーでした。
0369nobodyさん2013/05/07(火) 01:19:19.65ID:???
>>368
comment.user.usernameのところを

comment.id

にしたら数字は表示される?

されるなら
アソシエーションが上手く設定されていないか
該当するuserレコードがないか、
usernameがnilになったままだと思う
0370nobodyさん2013/05/07(火) 10:47:43.13ID:???
>>365
1個ずつ削っていってどれが原因か突き止めよう
0371nobodyさん2013/05/07(火) 14:15:19.54ID:???
>>370
そこが干渉しあってjqueryが動かなくなるとかありえるんですか?
0372nobodyさん2013/05/07(火) 14:33:10.19ID:???
よくある
0373nobodyさん2013/05/07(火) 15:27:56.31ID:???
順番入れ替えたり
組み合わせを変えたりと
いろいろと試すしか方法はないのですか?

そこの記述は同じのままで今までは問題なくprecompileしてもjQueryは動いていたのですが。。。

/assets/javascripts/ 配下に

test.js

みたいなファイルを作ってprecompileかけた時点で
jQueryが100%動かなくなります

このせいで現状、新しいjsを追加できないでいます。
0374nobodyさん2013/05/07(火) 15:33:25.97ID:???
>>373
今までは動いていた、だから何?
このまま放置しても直るわけじゃないんだから
いろいろ試すしかないでしょう??
0375nobodyさん2013/05/07(火) 16:08:26.87ID:???
>>374
デタデター
質問厨を相手にすると急に極度の上から目線の奴w
究極に性格がひねくれてるんだろうな
このスレって>>374みたいな社会不適合者が多すぎ
0376nobodyさん2013/05/07(火) 16:21:28.03ID:???
>>375
まぁ そう言ってやるなよ。
知識とかもハンパもんに限って必ず >>374みたいな性格をしてる
これはどの分野においてもそう。
これを カジリみたいな奴に限って偉そうにしてる法則という。

このスレももうそろそろ終わりでいいんじゃね?
発展的な話の場にもならないし
質問厨が沸くと水を得た魚のようにしゃしゃり出てくるハンパもんがいるし。

あとは定期的にキーワードを検知して関連記事を自動書き込みするボットしかいない。

スレの存在意義ないだろ。
0377nobodyさん2013/05/07(火) 16:33:26.84ID:???
>>374
上から目線ワロタ
0378nobodyさん2013/05/07(火) 16:36:19.23ID:???
Railsスレってしょっちゅう混沌とした空気になってるよな。

お前らもCakePHPスレに来なよ。
まともな連中ばかりだぜ。
0379nobodyさん2013/05/07(火) 16:52:18.68ID:???
>>376
自動書き込みボットが一番良い仕事してるだろ馬鹿にするなよ
0380nobodyさん2013/05/07(火) 17:32:24.28ID:???
>>375-377
この程度で偉そうって他にどうしたらいいんだよ
俺の相手する暇あるなら質問に答えてやれよ
0381nobodyさん2013/05/07(火) 18:29:54.39ID:???
>>379
Twitterでやってろクソボット開発者
0382nobodyさん2013/05/07(火) 18:38:13.91ID:???
>>380
お前の言葉の選び方だろ

お前の言葉選びのセンスは、
吉野家でたかだか300円の牛丼を食べるだけで、
店員に対して高圧的に出てるDQN客と同レベル
はたから見てて恥ずかしいレベル。

客観的に自分の書き込みをもう一度見て見たら?高圧的な高慢知己だから。

ここのスレってそんなふうに心が荒んだ奴ばかりしかいないように思える。

言語の取捨選択とかでも明らかに人間性が現れてるのかもな。

たまにCakePHPをバカにしてるRails脳がいるようだが、
明らかにあちらのほうが人間的に賢い人達が多い。

ここのスレはハンパものの墓場ってかんじ。
むしろ肥溜め。
0383nobodyさん2013/05/08(水) 01:44:44.24ID:???
>>380
あんま気にすんなw
全部同じ口調だし言わなくても分かるだろ。
満足いく回答がすぐに来ないと気に入らないんだろ

切ないことにAndroid開発者の平均年齢層は極端に低いのも事実という。
あまりにも頭の悪そうな質問者はスルーしてやるのも優しさ
0384nobodyさん2013/05/08(水) 01:46:05.13ID:???
AndroidじゃなくてRails開発者ねw
0385nobodyさん2013/05/08(水) 01:59:02.20ID:???
牛丼屋店員「さきほど、そちらのほうに配膳できてたはずなんですが。。。」

DQN客「だから何?(鬼の首を取ったかのように)」

ってか?

あんまり>>374をいじめてやるなよwwww
0386nobodyさん2013/05/08(水) 06:06:31.75ID:???
テスト駆動開発 (てすとくどうかいはつ、test-driven development; TDD) とは、
プログラム開発手法の一種で、
プログラムに必要な各機能について、最初にテストを書き(これをテストファーストと言う)、
そのテストが動作する必要最低限な実装をとりあえず行った後、コードを洗練させる、という短い工程を繰り返すスタイルである。

失敗するテストを書く
できる限り早く、テストがパスするような最小限のコード本体を書く
コードの重複を除去する(リファクタリング)

http://ja.wikipedia.org/wiki/%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA
0387nobodyさん2013/05/08(水) 10:07:53.39ID:???
>>381
それくらいこのスレの価値は低いって言う皮肉のつもりだったんだ・・・
03883662013/05/08(水) 14:33:02.21ID:???
>>369
comment.idなら表示されました。

該当するuserレコードがあることとusernameがnilで無いことはDBの中を直接見て確認しました。
ということはアソシエイトの問題なのでしょうか?

あと
@post = Post.find(params[:id])
#@comment = Post.find(params[:id]).comments.build
とコメントアウトしても動きました。

@post.comments.build という呼び出し方をするとアソシエイトが壊れるのでしょうか??
アソシエイトの設定は以下のようにしています。
//user.rb
has_many :posts, :dependent => :destroy
has_many :comments, :dependent => :destroy
//post.rb
belongs_to :user
has_many :comments
//comment.rb
belongs_to :post
belongs_to :user
0389nobodyさん2013/05/08(水) 17:16:40.39ID:???
CommentController#createのソース貼って
0390nobodyさん2013/05/08(水) 17:31:26.37ID:???
@post = Post.find(params[:id])
@comment = Post.find(params[:id]).comments.build

↑このときの@post.commentsと

@post = Post.find(params[:id])
@comment = @post.comments.build

↑このときの@post.commentsを
出力してみたら良いと思うよ、たぶん違うから
0391nobodyさん2013/05/11(土) 22:53:03.07ID:/vh0CRqz
assets:precompileについて質問です
今サーバーのdeploy手順でつまづいていて
scssで作ったファイルが予想通りにdeployされません
assets:precompileを実行するとすべてのcssやjsがapplication-(MD5).css等のファイルに格納されてしまいますが
これを
top-(MD5).cssやcolumns-(MD5).css等の個別のcssファイルにとどめたままscssからcssにコンパイルしてから
deployする方法はないでしょうか?
一応amazons S3等に配置する予定なので、ライブコンパイルしない方法のほうが良いです
0392nobodyさん2013/05/12(日) 09:12:42.14ID:L5RVvtVo
http://stackoverflow.com/search?q=assets+scss
0393nobodyさん2013/05/17(金) 23:03:38.27ID:???
質問させてください
 
現在は会員登録制となっています

掲示板、ブログ、コメントなどへの書き込みはログイン必須です。

しかし、非会員でも書き込みを出来るようにしたいと思うのですが

forumsやblogs、comments

には、もちろん user_id があります。
例えばcommentモデルで

validates_presence_of :user_id
さえ存在していなければ、

非会員が投稿するときは
user_idはnilの状態でcommentsレコードが作られるようになるのでしょうか?

そしてそれをviewでnilなら
名無しさん のように記述すればいいですか?
0394nobodyさん2013/05/18(土) 00:02:05.59ID:???
その通りです
0395nobodyさん2013/05/18(土) 00:07:21.65ID:BDs/Gnzi
ログインしていない状態では名無しさん専用userを設定するという方法
もある。いちいちnil判定しなくてよくなる(NullObjectパターン)。
0396nobodyさん2013/05/18(土) 03:04:47.83ID:???
>>395
詳しくお願いします!!

usersテーブルに1レコード
「名無しさん」レコードを予め作っておく!ってのとは違いますよね?
0397nobodyさん2013/05/18(土) 05:53:59.81ID:IcC7K181
https://github.com/ryanb/cancan

http://asciicasts.com/episodes/192-authorization-with-cancan
0398nobodyさん2013/05/18(土) 10:08:57.60ID:???
validates_presence_of :hoge
よりも
validates :hoge, presence: true
のほうがなうい?
0399nobodyさん2013/05/18(土) 10:42:44.61ID:BDs/Gnzi
>>396
いや、それでいいのだ。
0400nobodyさん2013/05/18(土) 10:56:04.26ID:BDs/Gnzi
* 名無しさん = nil の場合

<% if @post.user.present? %>
投稿者: <%= @post.user.name %>
<% else %>
投稿者: 名無しさん
<% end %>

* 名無しさん = 専用userの場合

まず、「現在のログインユーザー」として常時何か値が設定されるようにする。
ログイン状態なら通常のユーザー
未ログイン状態なら名無しさん のように。
んでもって

投稿者: <%= @post.user.name %>

という感じ。

名無しさんのレコードは db/seeds.rb とかで作っておく。
0401nobodyさん2013/05/18(土) 11:49:13.56ID:???
ログイン状態か否かで分岐する処理(例えばログインフォームの表示など)は
ユーザーが名無しさんかどうかで分岐するということ?
何となくそれは美しくないと感じてしまうが自分の感覚がおかしい?
0402nobodyさん2013/05/18(土) 14:40:33.58ID:???
>>400
ありがとうございます


view時点ではいいですが

アソシーエーションが下記で設定されていたとします

user.rb
 has_many :comments

comment.rb
 belongs_to :user


この状態でcommentをcreateしたらuser_idがnilエラーになりませんか?
0403nobodyさん2013/05/18(土) 17:03:54.16ID:BDs/Gnzi
>>402

コントローラでも
current_user.comments.create とかするからnilにはなり得ない。
current_user は名無しさんであることもそうでないこともある。
0404nobodyさん2013/05/18(土) 17:06:29.41ID:BDs/Gnzi
>>401

ログイン状態はセッションにuser_idがあるかどうかで判断することに
なると思う。(def; logged_in? session[:user_id].present?; end)
ログイン後の処理でのみ(通常ユーザーと確定したときに)user_idを保存
するようにすれば名無しさん状態でセッションにuser_idが入ることは
ないだろうし。
0405nobodyさん2013/05/18(土) 18:43:00.60ID:???
>>403
名無しさんを作るためには

�@usersテーブルに「名無しさん」レコードを作り準備しておくことが前提ですか?

その場合、ユーザー一覧を出力する時のUser.allでは
「名無しさん」レコードが含まれて表示されますよね?

これはdefault_scopeで「名無し」さんレコードを除外した上で
取得するようにするように記述して対処しておくってことですか?

もしくはuser_idがnilでもcreateをコメントできませんか?
それが出来ればviewで>>400の上部にある記述をするだけで問題解決しそうに思えるのですが。。。。
0406nobodyさん2013/05/18(土) 19:32:02.99ID:???
>>405
validates_presence_of :user_id
を外しさえすればuser_idがnilだろうがcommentはsaveされると思うよ
もちろん他の部分どう作ってるかに依存するからなんとも言えんが・・・・
0407nobodyさん2013/05/18(土) 19:36:46.80ID:???
user_idがnilでもcreateをコメントできませんか?

↑この質問の意味が分からないから説明してくれ
0408daisuke2013/05/28(火) 22:10:54.46ID:sRuLljLH
github
https://github.com/brobertsaz/railscrm

これの動かし方わかりますか?
0409nobodyさん2013/05/28(火) 22:13:28.14ID:???
>>408
Installてとこ読めばいいだけに見える
0410nobodyさん2013/05/31(金) 10:18:17.43ID:+PRRlHZr
http://www.ustream.tv/recorded/33523905
http://www.ustream.tv/channel/rubykaigi1
http://www.ustream.tv/channel/rubykaigi2
0411nobodyさん2013/06/01(土) 11:04:04.45ID:PrhkBdJG
High Performance Rails
http://www.ustream.tv/recorded/33559705
http://rubykaigi.org/2013/talk/S76

Amazon.co.jp: WEB+DB PRESS Vol.70
実践Rails高速化
http://www.amazon.co.jp/gp/product/4774151904
0412nobodyさん2013/06/03(月) 11:29:37.37ID:???
データベースエンジンには
MongoDBとMySQLはどちらがオススメ?
0413nobodyさん2013/06/03(月) 17:04:33.89ID:???
用途が違うからなんともとしかいいようがない
0414nobodyさん2013/06/03(月) 18:24:00.41ID:???
ActiveRecordでANDとORの複合で、検索対象の列を動的に変更する方法ってどうやれば良いんでしょうか・・・。
0415nobodyさん2013/06/03(月) 18:48:12.14ID:???
>>414
arel_tableで調べてみるとお望みの情報が得られるかもしれません
0416nobodyさん2013/06/03(月) 20:15:07.59ID:???
>>413
ん?どういうこと?
04174142013/06/03(月) 20:30:14.53ID:???
>>415
あざっす。
ちょっと調べてみます。
0418nobodyさん2013/06/07(金) 17:59:31.41ID:???
gemやら、Twitterブートストラップの完全版など使えば使うほど
Railsアプリの動きは遅くなるのかな?
0419nobodyさん2013/06/08(土) 09:01:28.16ID:???
アソシエーションでhas_manyを指定した場合、テーブルがjoinされずに
参照元テーブルのデータ1件1件に対してSQLを発行して
参照先テーブルのデータを抽出してる。

何か嫌だなと思い、joinsメソッドを利用しようかなと思うと、
本には「可搬性を損なう可能性があり余り使うな」的なことが書かれている。

うまい具合にjoinさせるにはどんなやり方がスマート?
0420nobodyさん2013/06/08(土) 09:10:39.43ID:???
includes
0421nobodyさん2013/06/08(土) 11:25:43.61ID:???
thx!

has_manyのincludeオプションがrails4では無くなってるぽいし、
とりあえず気にしないことにするわ
0422nobodyさん2013/06/08(土) 11:55:01.89ID:bZllAe6B
has_many のオプションじゃなくて、
active_record/relation/query_methods.rb で
定義されている Post.includes(:author) みたいな方じゃないの?
0423nobodyさん2013/06/08(土) 21:51:56.32ID:???
rails4に移行した人に聞きたいんだけど
そんなに早い?
0424nobodyさん2013/06/08(土) 22:46:38.06ID:???
そこそこ速い
けどruby1.9→2.0ほどは変わらない
ちゃんとベンチマーク取ってない印象レベルだけど
0425nobodyさん2013/06/08(土) 22:59:29.22ID:bZllAe6B
スピードについてはとくに売りにしてはいなかったと思うので情報がないな。
せいぜい「1.8を切り捨てたので方々で場合分けをする必要がなくなった」くらいで。
0426nobodyさん2013/06/08(土) 23:31:05.54ID:???
ruby1.9→2
ってそんなに早くなったかなぁ
0427nobodyさん2013/06/09(日) 09:03:38.88ID:???
require が速くなったので rails のような require の塊だと起動時間が雲泥の差
スループットはそんなに変わらん
0428nobodyさん2013/06/09(日) 12:39:49.72ID:???
Rails4の場合、turbolinksの効果が気になるなー。
0429nobodyさん2013/06/12(水) 21:14:40.81ID:???
turbolinksってコンテンツ領域などではなくて、body全体を置き換えるの?
0430nobodyさん2013/06/13(木) 08:18:46.12ID:EofK01c0
bodyまるごとと、あとtitleと、ページ閲覧履歴(pushState)かな。

サーバはturbolinks経由で呼ばれていることには気付かず、従来どおり
HTMLをまるごと返す。よってページのHTML生成に関してのサーバ負荷は
変わらない。

headにあるlinkやscript要素の解釈がなくなる分が高速化ということらしい。
スタイルシートやスクリプトの読み込みについては、asset pipilineがあるので、
基本的に全ページ同一のはず。
0431nobodyさん2013/06/13(木) 22:27:25.95ID:???
楽で良さそうだね
0432nobodyさん2013/06/14(金) 02:41:26.20ID:???
Rails4のprecompileでdigestの入ったファイルしか生成されないせいでcssのbackgroundが読み込めません
css側にimage-url指定しても同じようで、どうすれば解決できますか?
0433nobodyさん2013/06/14(金) 06:07:42.18ID:???
これはどうだろ
background-image: url(image_path('check.png'));
http://stackoverflow.com/questions/15257555/how-to-reference-images-in-css-within-rails-4
0434nobodyさん2013/06/14(金) 11:52:47.97ID:???
>>433
その質問は既に実践してみたけどダメっぽいす
rails4のsprockets-railsがハッシュ化したものしか吐き出してくれなくて、CSSで自動対応orハッシュ化しないものも吐き出すのどっちか実現できるといいんですが
0435nobodyさん2013/06/14(金) 13:45:06.60ID:Tnh0zzXS
cssつーか、scssで書かないとimage_path関数は使えないのでは?
0436nobodyさん2013/06/14(金) 13:53:35.38ID:Tnh0zzXS
> Only compiles digest filenames. Static non-digest assets should simply live in public/.

ということは、直接 public/images (を掘って) 使え、ということなのだろうか。
0437nobodyさん2013/06/14(金) 14:23:26.62ID:???
>>435
ここでいうcssはscssのことです
画像をそのままpublicにコピペしてprecompile、で済めばいいんですがCSSフォントをstylesheetのフォルダに入れていたりして
逐一手作業でやるとうっかりミスがありそうで怖いっすね
0438nobodyさん2013/06/18(火) 15:46:00.85ID:???
バリデーションの条件を動的に変更することってできる?
あるときは必須入力だが、またあるときは空白でもいい、という具合に
0439nobodyさん2013/06/18(火) 21:55:59.97ID:tjJhZDGu
if: とか unless: とか on: とかのオプションをどぞ。
0440nobodyさん2013/06/18(火) 22:18:51.93ID:hv3t4vIG
,
◆じゃあのさん来た!◆
15:名無しさん@13周年[]
2013/06/18(火) 20:44:34.07 ID:xHiEGVRK0
おうwww俺だwww
なんか色々起きてるみてえだなあwww
最近しばき隊大活躍だもんなあwww在特の奴らも巻き込まれてかわいそうになあ

これな、俺から言わせれば警視庁本部警備課と新宿署の不手際だわwww
完全に本部カラ派遣された本部警備課員と新宿署がドジ踏んだ案件だわ

--- 以下スレ情報 ---
【東京】嫌韓デモで衝突 在特会会長やしばき隊のメンバーなど8人を逮捕★12
http://uni.2ch.net/test/read.cgi/newsplus/1371555637/
0441nobodyさん2013/06/23(日) 12:47:46.80ID:???
railsでDBなどを二つのアプリで共有したい場合どうすればいいでしょうか?
database.ymlをそろえて片方からmodelとhelperをautoloadで読み込む方法以外にありますか?
0442nobodyさん2013/06/24(月) 00:40:42.32ID:QnIiM3MY
以前、pragmaticシリーズの本で二つのデータベースに接続する方法が書いてあったような。
0443nobodyさん2013/06/24(月) 07:26:45.49ID:???
>>441
modelだって2つのアプリで異なるだろう
2つともまったく同じだというなら、それは別アプリにする必要があるのか?から考えた方がいい
database.ymlをそろえて後はそれぞれで実装すればいい

>>442
逆だろ
0444nobodyさん2013/06/24(月) 07:59:17.65ID:7cn1fuW1
完全に同じならそこだけengineにしてしまえ。
0445nobodyさん2013/06/26(水) 07:31:56.30ID:???
4.0リリースおめ
0446nobodyさん2013/06/26(水) 16:03:45.08ID:y0jOgAZs
はじめまして。初歩的な質問で申し訳ないですが、こちらで質問させてください。

モデルからコントローラへ値を渡す際はどのような方法がありますでしょうか?

モデルで値を代入したインスタンス変数を用いて、以下のように[モデル]→[ビュー]へ値を渡そうとしたのですができませんでした(Rails 3.2.13)。
---
■失敗したコード
○モデル
@next_page = "test"

○ビュー
<%= form_for @tmp_order, :url => {:action => @next_page} do |form| %>

(省略)

<p><%= form.submit %></p>
<% end %>
---

そこで考えてみると、[モデル]→[コントローラー]→[ビュー]のような流れで渡さなければいけないのではと気づいたのですが、具体的にどのように記述すればよいかが分かりません。

上記の「失敗したコード」のモデルの記述をそのままコントローラーに記述すると、フォームのサブミットボタンを押下した際に文字列に対応するページへ遷移することができます。

ですので、[コントローラー]→[ビュー]へ値を渡したい場合はインスタンス変数を用いれば良いと分かったのですが、[モデル]→[コントローラー]へ値を渡す方法が分からない状況です。

参考となるサイトなどありましたらご教示いただけますと幸いです。よろしくお願いいたします。
0447nobodyさん2013/06/26(水) 16:33:14.55ID:???
モデルに値を設定するメソッドを作成して、コントローラーで返り値を受け取る
返り値をビューに渡せばOK

Controller:
@hoge %3d Model.hode

Model:
def self.hoge
return 'hoge'
end

View:
hoge %3d <%%3d @hoge %>
0448nobodyさん2013/06/26(水) 16:34:30.90ID:???
イコールがなぜか「%3d」になったけど、イコールに脳内変換してください
04494462013/06/26(水) 19:15:01.21ID:ubczZcmN
ありがとうございます。まだRailsをはじめて2週間ほどなので非常に勉強になります。

そもそもやりたいことの実装方法に何か見落としてがある気がしてきました。

フォームのサブミットボタンを押下した際に、
以下のようにコールバックを利用して、
createやupdate_attributeが呼ばれた後に
バリデーションの結果に応じてビュー(form_forメソッドの:url)に渡す
遷移先のページ名を切り替えれるようにしたかったのです。

---
■失敗したコード 2
○モデル
after_create :set_next_page
after_update :set_next_page

def set_next_page
self.valid? ? @next_page = 'next_test' : @next_page = 'test'
end

○ビュー
<%= form_for @tmp_order, :url => {:action => @next_page} do |form| %>

(省略)

<p><%= form.submit %></p>
<% end %>
---
04504462013/06/26(水) 19:17:40.96ID:ubczZcmN
バリデーションエラーが発生した際に、エラーをフォームを表示するページ('test')に表示し、
再入力をうながすようにしたいというのがはじまりです。

しかし、はじめはfrom_forの「:url => {:action =>」に「'next_test'」と
リテラルで記述していたので、バリデーションエラーの発生有無にかかわらず
次のページ('next_page')に遷移してしまいいとした挙動となりませんでした。

そこで、前述のようにコールバックを利用してなんとかできないかなと、
試行していますがどうもうまくいきません。

「:url => {:action => @next_page}」を記述しないと「undefined method `hoge_path'」のように怒られてしまいます。

なにか、アイデアやヒントがありましたらご教示いただけますと幸いです。
0451nobodyさん2013/06/26(水) 20:05:10.77ID:???
>>450
バリデーションを行うメソッドをコントローラに用意する
そのメソッドの中でエラーフォームをrenderするか次のページにredirectするかを決める
0452nobodyさん2013/06/26(水) 21:23:47.18ID:KC4YmkCB
モデルが遷移先を表す情報を返すのはおかしい。
バリデーション結果(@tmp_order.valid? とか @tmp_order.errorsとか)を
見て判断するばいいのでは?
04534462013/06/26(水) 22:02:25.58ID:ubczZcmN
おふたりともありがとうございます!

いただいたアドバイスをもとに
(バリデーションを行うメソッドをコントローラに用意する方法は分からなかったのですが、)
コントローラーで次のページにredirectする処理を入れるというのが良いと思ったので、
失敗したコード2(>>449)のモデルの記述を全て削除して、以下のように書き直しました。

「helper_method :select_next_page」を書くことで、
ビューからコントローラーメソッドを呼び出すことができるという記事を見つけたので、
その方法を使ってみました。
04544462013/06/26(水) 22:04:40.03ID:ubczZcmN
---
■失敗したコード 3
○コントローラー
helper_method :select_next_page


def hoge
private
def select_next_page(validation_flg)
redirect_to :action => 'next_test' if validation_flg
end
end

○ビュー
<% @next_page = 'test' %>
<%= form_for @tmp_order, :url => {:action => @next_page} do |form| %>


(省略)

<p><%= form.submit %></p>
<% end %>
<%= select_next_page(@tmp_order.valid?) %>
---

このコードだと、ビューが読み込まれる際に
必ず最下部の「<%= select_next_page(@tmp_order.valid?) %>」が
実行されてしまうので、testページが表示されないままnext_pageページが表示されてしまいます。

サブミットボタンを押下するまで「<%= select_next_page(@tmp_order.valid?) %>」が
実行されないようにすることはできないのでしょうか?
04554462013/06/26(水) 22:07:28.44ID:ubczZcmN
>>454の「○コントローラー」の記載は誤りです。正しくは以下です。すみません。
---
○コントローラー
helper_method :select_next_page


private
def select_next_page(validation_flg)
redirect_to :action => 'next_test' if validation_flg
end
0456nobodyさん2013/06/26(水) 22:08:24.95ID:???
>>454
ビューにそういう仕事をさせない
そういうのはコントローラの仕事

どうもPHP臭い癖が残ってるようだが、PHPと違ってビューはあくまで表示に徹するという意識改革が必要
04574462013/06/26(水) 22:17:20.64ID:ubczZcmN
>>456
ありがとうございます!

また考えなおしてみます!
0458nobodyさん2013/06/29(土) 06:05:07.02ID:4ayE3ytL
自分でサーバ立てるのってなんか楽しそうだしスゴそうだよね?
サーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ハードウェアの多重化なんて必要?
企業で使うとかじゃなく個人的に細々と立てたサーバが攻撃されることなんて滅多にないよね?
攻撃が来るって言ったって大した数じゃないんでしょ?
攻撃されたって大したことは起きないんでしょ?
http://b.hatena.ne.jp/entry/tmaeda.s45.xrea.com/20041101.html

ITmedia エンタープライズ:自社サーバがフィッシングサイトに「踏み台化」されたら? (1/3)
また、電源を切ってしまうことも良い対応ではない。
オンメモリ上で稼働しているフィッシングサイトの場合は、電源を切ることによって、すべてのデータが消えてしまい、原因究明や対応に遅れなどが出ることも考えられるからだ。
 事実、フィッシングサイトを構成するツールの中には、後に証拠が残らないよう、すべてがオンメモリ上で動作するものがある。
このような場合、再起動や電源オフによって、メモリ上にあるすべてのプログラムやファイルが消え、事実や原因の確認が困難になる。
http://www.itmedia.co.jp/enterprise/articles/0603/17/news004.html
0459nobodyさん2013/06/29(土) 12:26:21.94ID:???
すみません。質問させてください。

Rails4.0.0正式版を使っているんですが、
publicフォルダに独自のindex.htmlを置いたのです。

developmentモード時は
http://0.0.0.0:3000/
でindex.htmlが表示できたのですが、

productionモード時は
http://0.0.0.0:3000/
とアクセスしても

The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved.

というエラー表示が出てしまいます。

ログを見ると
ActionController::RoutingError (No route matches [GET] "/"):

となっています。

productionモード時でもindex.htmlを表示できるようにするにはどうしたらいいでしょうか?
0460nobodyさん2013/06/29(土) 14:18:14.35ID:hP/NWwWJ
productionならpublic直下のファイルはwebサーバが配信するから問題ない。
webサーバに頼らず自力で配信したいなら config/environments/produciton.rb の

# Disable Rails's static asset server (Apache or nginx will already do this).
config.serve_static_assets = false

を変更する。
0461nobodyさん2013/06/29(土) 17:50:02.42ID:???
>>460

デプロイ先がHeroku(Webrick)なので、
config.serve_static_assets = true

にして対応しました。おかげ様で表示することができました。
ありがとうございました!
0462nobodyさん2013/07/06(土) NY:AN:NY.ANID:???
Rails入門書を読んでいるんですが、結局画面定義(最終的な出力するHTML、CSS、JS)は、
Railsでやるんですか?

それともrhtmlを別ソフトで編集するんですか?
0463nobodyさん2013/07/06(土) NY:AN:NY.ANID:???
rails先生が一晩でやってくれます
0464nobodyさん2013/07/07(日) NY:AN:NY.ANID:???
デジエがdb的に閉じた環境すぎるのでRailでやり方がないかと・・
Deginoのようにdb自体をクラウドに置くのは嫌なんです

TuigwaaかDrupal+cck+viewsなら出来そうなんですが、
エンドユーザーがmodel追加可能なプラグインさへあれば後は何とかなりそうなんですが・・・
0465nobodyさん2013/07/07(日) NY:AN:NY.ANID:???
日本語でおk
0466あ2013/07/08(月) NY:AN:NY.ANID:kIUaRpvB
松江市ホームページ : Rubyによるグループウェア構築業務委託
http://www1.city.matsue.shimane.jp/tyumoku/johoseisaku/rubygw_kochiku.html

http://www1.city.matsue.shimane.jp/tyumoku/johoseisaku/rubygw_kochiku.data/youkyuushiyousho.pdf
0467nobodyさん2013/07/11(木) NY:AN:NY.ANID:???
Rails4.0をUbuntuで始めたんですが、LinuxだとGemfileが読み取り専用になっていてrootではないと編集できません。
GUIからgemfileは編集できないってことなのでしょうか?
0468nobodyさん2013/07/12(金) NY:AN:NY.ANID:0ocwBlfR
http://ja.wikipedia.org/wiki/Chmod
0469nobodyさん2013/07/12(金) NY:AN:NY.ANID:???
>>467
須藤さんに頼めば?
0470nobodyさん2013/07/12(金) NY:AN:NY.ANID:???
>>467
GUIから編集できます
0471nobodyさん2013/07/14(日) NY:AN:NY.ANID:???
よくわからんが rails newを間違えてsudo付けて実行したとかじゃないの
0472nobodyさん2013/07/15(月) NY:AN:NY.ANID:V1KW3/2M
Riding Rails: [ANN] Rails 3.2.14.rc1 has been released!
http://weblog.rubyonrails.org/2013/7/12/Rails-3-2-14-rc1-has-been-released/
0473nobodyさん2013/07/15(月) NY:AN:NY.ANID:???
みんなはデザインの部分は
DreamWeaverみたいなの使って作って
それをあてがってる?
それともデザインもhtmlをタグ打ちしてる?
最近はデザインのほうが面倒く感じるようになってきた。。。
0474nobodyさん2013/07/15(月) NY:AN:NY.ANID:IrAB52ny
うちのHTML制作スタッフはDWとSublime Text使ってる。
0475nobodyさん2013/07/15(月) NY:AN:NY.ANID:???
pc用とスマホ用を切り分けてデザイン作るのがメンドイんですが
何か良いアドバイスないですか?
皆さん予め自分用のテンプレート作ってますか?
コントローラーから同じ変数だけビューに渡して

ビューだけそれぞれのページを
pc用、スマホ用に分けて表示させるかんじで
0476nobodyさん2013/07/15(月) NY:AN:NY.ANID:???
>>473
photoshopでカンプ作ってからコーディングする
livereloadがあるからエディタはなんでもいいんじゃないすか
04774672013/07/15(月) NY:AN:NY.ANID:???
>>469-471
それが原因でした

chownしてなんとか解決しました。
ありがとうございました。
0478nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>476
カンプってなんだ?
0479nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>476
うは
初めて知った!!
みんな、デザイン部分はphotoshopとかでやってから
それを利用してテキスト部分だけをrailsであてがうのか。。。
俺、今まですべてタグ打ちでデザインレイアウトまでやってて
時間がかかりすぎてたから
レイアウト作るのは本当に億劫な作業だったわ
0480nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>476
ただ、コンプで検索してみたところ基本的にPC用デザインしか対応できなさそうだけど
スマホ用のデザインはどうしてる?
0481nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
Railsでwebアプリ作ってみたはいいが
1ページ1ページの読み込みがクソ遅い

都度更新が行われるSNSなんでキャッシュは実装していない

ソーシャルボタンも重くしてる要因だと思うけど
それ以外のページでも読み込みがクソ遅い

なぜ?
ページを読み込む際にカウント使ってリアルタイムの値を表示させまくってたりするから?
0482nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
どなたか教えてください

phpMyAdminやphpのアクセス解析をRailsAppと併用して使いたいがためにApache2+Passengerの組み合わせを利用しています。

様々な記事を読んでいるとnginx+Unicornのほうが圧倒的に早いとのことです。

phpMyAdminやphpのアクセス解析を利用しつつ
nginx+Unicornを利用する方法はありますか?
0483nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>480
スマホサイトでもカンプ作るのは割りと普通だが、CSS3がほぼ対応してるからインブラウザデザインをすることも多い
ただスマホの場合はデザインの自由度が限られてるからlivereloadかけながらゴリゴリやっても問題ないかも
0484nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>482
cgiは基本的にapacheで処理しつつ、railsだけをnginxのupstreamで処理する

というかphpMyAdminもphpもnginxで動くから、すべてnginxに移行したほうが楽なんじゃないのか
nginxもapache同様ログが残せてWebanalizerも使える
0485nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>483
カンプってそのまま使えないの?
俺の見解だとただの完成予想図みたいなかんじなんだけど。


実際にそれを利用して、テキスト部分だけを変数的なもので入れ替えるってことはできるの?
0486nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>485
HTML用に書き出せることはできるけど、あくまで完成予想図だよ

ブラウザでデザインしてると一つの要素をいじると他の要素に影響与えたり、コーディングが複雑になると容易に変更できなくなる
カンプなら自分の考えを短時間で表現できるし、後からの変更に対応しやすい点が特徴
0487nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>486
やっぱりそうか
何らかの形で直感的にイメージ(レイアウト)を作成して
そこにRailsのコントローラーで吐き出したものをあてていくって出来ないかな?

そうすれば楽なのに

出来ればテンプレートとかあって
PC用、スマホ用のレイアウトとカバーできたらいいのに
0488nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>484
Railsって元々が遅いもんかな?
メモリ1GBのさくらVPSで色々試しています。

helperの多用とか、リロードごとのcount集計(カウンターキャッシュを使ってない)とかやってるとかなり遅い。
1ページが完全に表示されるまでに3秒くらいかかります。
同時にアクセスしてる人なんてほとんどいないのに。。。。

こんなもんなんですか?
大手とかみたいにサクサクと表示させるには
ページキャッシュの利用が必要ですか?
ログインサイトでTwitterみたいな投稿サイトだとキャッシュはフラグメントキャッシュくらいしか使えないので。。。。

しかもフラグメントキャッシュはあまり効果的じゃないみたいですね
0489nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
なんか、acts_as_listがなかなかRails4に対応しないですね。ロードマップには対応の予定とはなっているけども。

https://github.com/swanandp/acts_as_list

みなさん、モデルのレコードの順番を変更するのに、何使ってます?
acts_as_list以外に選択肢ってありますか?
0490nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>488
自分がさくら1Gプランでやってたときはunicornをアプリケーションサーバにして100ms/reqくらいのパフォーマンスでした
クックパッドはRailsで大量のトラフィックさばいて60ms/req前後出してるからチューニングすればそれくらいになるはずです

まずはapacheのabベンチなり、ブラウザのデベロッパーツールで純粋なリクエスト速度を測定しましょう
おそらく3秒もかかっていることはないでしょう

RDBSを使用しているかと思いますが、保存・更新はオンメモリで動作しないために非常に遅いです
リロードごとに更新処理が入るのならmongoやredisのようなデータベースを使用しましょう

helperなど独自メソッドを使用した場合の遅延は相当に多用しない限り大きくならないはず
実際にループで回した時にどれくらいの遅延になるかをベンチマークして把握しておきましょう

キャッシュはページキャッシュが有効ですが動的サイトには向きません
フラグメントキャッシュがどれだけ有効なのかはキャッシュを無効にした時にビューの読み込みにどれくらい時間がかかっているか、ログを出力すればわかるはずです
余りに時間がかかっている場合はフラグメントキャッシュを導入しましょう
0491nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>490
事細かい説明ありがとうございます
Railsアプリを立ち上げてるとき

ab -c 100 -n 500 "http://localhost";

を実行すると

Requests per second: 80.54 [#/sec] (mean)

程度

Railsアプリを立ち上げていないときは
1600くらいの結果がでています


なにが重いんでしょうか?
ちなみにユーザーがページ遷移するごとにUserテーブルのとあるカラムを毎回書き換えてます。

あとjQueryを利用していたり
link_toを使っていたり
ソーシャルボタンを多く表示していたり
1ページ内でページを表示するときに同時に20項目くらいカウントをとっています


どれが致命的に思えますか?
0492nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>491
できれば同時接続一人でリクエストに要する時間を出したほうがいいかもしれません
コードを修正した時にミリ秒単位で算出した方がわかりやすい(といっても好みの問題ですが)

さっきいったようにMySQLなどのRDBSでリロードごとに更新処理を挟むとそれだけでかなりの遅延になるので
redisのようなオンメモリで更新できるベータベースを使用するだけで大幅に時間短縮できます

jQueryやソーシャルボタンはクライアント側で読み込み後の非同期処理なのでアプリケーションのリクエスト速度には影響しません
ただし公式のソーシャルボタンはリクエスト数を非常に増やす要因なので、ボタンは独自に用意して自分でAPIを叩くといったことをすると非同期処理も短縮できるでしょう
0493nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>490
それともう一点だけ疑わしい点が!

application_controller.rb

の中に10ほどのアクションを記述しています。

しかも、どれも若干複雑な処理です。


これらはいろんなコントローラーから呼び出されるのを想定したため
ここ一カ所で集中管理しています。


もしかしてapplication_controller.rbの中のアクションって
ページごとにその値が必要、不要関係なく、
すべて実行されてしまい重くなっている原因になりえますか?

それとも、そのアクション自体を外部コントローラーから呼び出したときだけ、そのアクションのみが実行されるのでしょうか?←これが私の現在の認識なんですが
0494nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>492
mini profilerというgemで試しに各ページのリクエストに要する時間を見てみると
こんなかんじです

ページ
�@1771ms
�A1484ms
�B3388ms
�C624ms
�D381ms
�E583ms
�F305ms
�G1080ms

ページごとに大きく差はありますが
普通はどの程度までが許容でしょうか?
0495nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>494
さすがにいちいちクレクレしすぎw
どの程度が許容出来るかは数値じゃなくて実際の体感によるものだし、チューニングはベンチマークとって一つひとつ検証するしかない
0496nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>495
甘えちゃって申し訳ないです。

そうなんですね、やはり体感で検証しながら修正かけていくしかないんですね。。。

最後にどうか一つだけ質問させてください。

たとえば、
テーブル(モデル)�@〜�Dの異なる5種類のテーブル
それぞれで10レコード、合計50レコードを表示するとき

それぞれ1レコードづつにつき
5項目(カウント集計だったり、helperだったりを呼び出し)
あったとしたなら
表示するときに重くなって当然なのでしょうか?


それぞれ1レコードにつき40msで返してきても
50レコードあるので2000ms、つまり2秒になり体感だと重いです。
でも、いろんなDBサイトではこういう表示の仕方も普通にしてますよね?

その方式で素早い読み込みを
どうやって実現すればいいか悩んでいます。
0497nobodyさん2013/07/16(火) NY:AN:NY.ANID:e/3ts/rm
http://e-words.jp/w/IOPS.html

さくらインターネットVPSのIOPSが
http://pc.casey.jp/archives/153904156

Amazonクラウド、2テラバイトのSSD、60GBメモリ搭載で12万IOPSを実現するインスタンスを発表 − Publickey
http://www.publickey1.jp/blog/12/amazon2ssd60gb12iops.html
0498nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
N+1問題などを監視してパフォーマンスを改善するRailsプラグインBullet|WEBデザイン Tips
http://blog.digital-squad.net/article/149685338.html

http://www.techscore.com/blog/2012/12/25/railsライブラリ紹介-n1問題を検出する「bullet」/
0499nobodyさん2013/07/16(火) NY:AN:NY.ANID:???
>>496
横からだけど、1ページ表示させるのに
何十、下手すると100以上のSQLを裏で発行させているのでは。
もしそうなら遅くて当然です。

むしろ今のサーバーは安いVPSでも頑張るなというのが率直な感想です。
0500nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
すみません。質問です。
複数のRailsアプリがあるとして、それらから何らかの統一された認証機構にアクセスして、
ユーザー認証を行いたいのですが、なにか良い方法はないでしょうか?

◆背景
目的毎に複数のRailsアプリを運用する予定があり、それぞれのRailsアプリでDeviceなどで個々に認証するようにしてしまうと、アカウント情報が分散してしまい、統一管理できない。ユーザーにRailsアプリ毎にアカウント情報の登録・管理の負担を与えてしまうことは避けたい。

◆現在考えている方策
VPSでLDAPサーバーを立て、ユーザーアカウントの登録・管理はこのLDAPサーバーで行う。各RailsアプリはこのLDAPサーバーを使って認証を行う。

という感じなのですが、上記以上の良い方法はありますでしょうか?

ちなみに、TwitterやFacebookのアカウントで認証させればいい、という方法は、これらのWebサービスを使っていない人もいるため、避けたいです。
あくまで、自前でアカウント管理を行い、各種Railsアプリがそれを見にいく方法でいきたいと思っています。
0501nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
トレードオフ
0502nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
トレードオフ(英: Trade-off)とは、一方を追求すれば他方を犠牲にせざるを得ないという状態・関係のことである。
トレードオフのある状況では具体的な選択肢の長所と短所をすべて考慮したうえで決定を行うことが求められる。
0503nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
「ベストプラクティス」という言葉の乱用
「ベストプラクティス」というと、「うたがいなく常に最善である」という印象を与える。
大抵まちがった印象である。

どれだけ自信があったら「ベストプラクティス」などという言葉を疑いもなく使えるんだろうか。
私は「こうしなさい」などとは言えない。
今の自分の考えを説明するが、自分でもそれが正しいとは思わない。
ある特定の問題に対処するのに、こういう考え方ができる、というだけにすぎない。
たぶん1ヶ月たったら別の手法に向かってるだろう。
http://tomykaira.hatenablog.com/entry/2013/07/10/222012
0504nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
COUNT(*)をレコードの存在チェックのために安易に使うべからず
http://ameblo.jp/archive-redo-blog/entry-10035200905.html

counter_cache
http://wiki.usagee.co.jp/ruby/rails/RailsGuidesをゆっくり和訳してみたよ/Active%20Record%20Associations
0505nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
>>499
500msかかってるページで100sqlほど

1300msかかってるところで80sqlほど

1500msかかってるページで30sqlほどですね←sqlクエリ少ないのに何故か時間がかかってる

>>496にも書いたように

特定テーブル5種類>それぞれのテーブル特定レコード10個づつ

これをeachで回して
それぞれのレコードをレンダリングで呼び出しています

レンダリングしている内容にcountやら様々な情報が含まれています

それとCanCanのload_and_authorize_resourceを使っているのですが

これが重くなっている理由とかになり得ませんか?
0506nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
>>499
マスタテーブルが複数あります。 

特定レコードの各項目にはそのマスタテーブルのidで保持させている場合だと
特定レコードを1つ表示させるごとに
その項目の数だけsqlが発行されるのは仕方ないですよね?

たとえば

【対象テーブル】生徒 
【マスタテーブル】性別 血液型 都道府県 

で生徒を10件表示させようとしたとき
生徒テーブルにはseibetsu_id、ketsuekigata_id、todoufuken_idに数値が格納されているので

生徒1件につき少なくとも3回のsql発行
生徒10件の表示だと30回のsql発行になりますが、これが普通の設計方法じゃないのでしょうか?

どうやらこれが原因で遅くなってそうですね。。。
0507nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
counter_cache
0508nobodyさん2013/07/17(水) NY:AN:NY.ANID:y2fD7JwW
前提:Mysql(InnoDB)でcount(1)はテーブルスキャンが発生して遅い
http://qiita.com/tachiba@github/items/797ea74e7eeb7f32f886
0509nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
漢(オトコ)のコンピュータ道: InnoDBでCOUNT()を扱う際の注意事項あれこれ。
http://nippondanji.blogspot.com/2010/03/innodbcount.html
0510nobodyさん2013/07/17(水) NY:AN:NY.ANID:y2fD7JwW
Riding Rails: [ANN] Rails 3.2.14.rc2 has been released!
http://weblog.rubyonrails.org/2013/7/16/Rails-3-2-14-rc2-has-been-released/
0511nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
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
0512nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
[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/
0513nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
>>506
そればっかりは良くも悪くもRailsの仕様だから劇的に早くするのは難しいよ
それか生徒テーブルに直で各マスタテーブルの値を持たすか
0514nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
Rails
自己参照結合
自己結合(Self Joins)
http://wiki.usagee.co.jp/ruby/rails/RailsGuidesをゆっくり和訳してみたよ/Active%20Record%20Associations#m6658a2f

Self-referential has_many :through associations
http://blog.hasmanythrough.com/2007/10/30/self-referential-has-many-through
http://blog.hasmanythrough.com/2006/4/21/self-referential-through
http://japan.zdnet.com/blog/yoshimi/2007/11/22/entry_27016437/
0515nobodyさん2013/07/17(水) NY:AN:NY.ANID:???
>>513
>>419
0516nobodyさん2013/07/18(木) NY:AN:NY.ANID:???
>>506

昔からRDBを使ったシステムでパフォーマンスに問題がある場合、
個人的な感覚ですが9割以上はRDBの使い方や知識不足に原因があるように思います。
今回の場合も、まずその大量のSQL発行が原因でしょう。

> 生徒1件につき少なくとも3回のsql発行
> 生徒10件の表示だと30回のsql発行になりますが、これが普通の設計方法じゃないのでしょうか?

DBの論理設計の点ではお手本通りです。
物理設計(ここで問題になりそうなのは参照整合性制約の設定やインデックスの設定など)に関しては、
レスに情報がないので分かりませんが
(物理設計をおろそかにすると、データ件数が増えた場合、絶望的なパフォーマンスの問題が発生します)、
今現在提示されている情報の中で問題なのは、多数のSQLを発行している点です。

例で示されたテーブルから10件のデータを取得する場合、
生徒テーブル:1つのSQL
性別・血液型・都道府県テーブル:各10のSQL、合計30のSQL
を発行することになり、常識的なDBの使い方とは言えません。

このような場合は、性別・血液型・都道府県にNULLが入りうるなら外部結合、
入り得ないなら内部結合を使うべきでしょう。
それならば1つのSQLで済むはずです。

ActiveRecordを利用する場合、裏で発行されるSQLは隠蔽されるわけですが、
実際に使い物になるシステムを開発したいと考えるなら、
このあたりもしっかり押さえる必要があると思います。
望みのSQLを発行させるには、別途、本やネットで調べれば、
いくつかのノウハウが見つかると思います。
0517nobodyさん2013/07/18(木) NY:AN:NY.ANID:???
>>516
ありがとうございます

内部結合と外部結合について教えていただけませんか?

includesは外部結合ですか?
0518あ2013/07/18(木) NY:AN:NY.ANID:???
http://www.sophia-it.com/content/内部結合
http://www.sophia-it.com/content/外部結合
0519nobodyさん2013/07/18(木) NY:AN:NY.ANID:???
そもそもincludesは結合じゃないです
railsとsqlは分けて考えましょう
0520nobodyさん2013/07/18(木) NY:AN:NY.ANID:Ci9HSP1w
Railsで出来たサイトで、たまにコントローラーはあるけど
アクションは指定してないurlでもエラーが出てないことがありますが
あれはどうやるのでしょうか

http://www.sample.com/controller/

でもエラーが出てないってことです
0521nobodyさん2013/07/18(木) NY:AN:NY.ANID:???
結合の話は置いておいて、

生徒テーブル:1つのSQL
性別・血液型・都道府県テーブル:各10のSQL、合計30のSQL

この例で行くと、includesを使えば4つのSQLで済むけど、そういう話じゃないのか?
そもそも、性別を別テーブルにする意図がわからないんだけど。最近は体が男で心が女とかも
あり得るし、その個人がどちらとして扱って欲しいかを含めると6通りの性別が考えられるけど、
それでも高々6種類しかないものをテーブルにする必要があるんだろうか。血液型もしかり。
0522nobodyさん2013/07/19(金) NY:AN:NY.ANID:???
@students = Student.page(params[:page]).per(10).includes(:genders, :blood_types, :prefectures)

コントローラーでは上記のようにしています。

index(�@views/students/index.html.erb)では、
10件のstudents(�Aviews/students/_student.html.erb)をレンダーするとします。

そして、この�Aの中には
上に書いた 性別 血液型 都道府県 が表示されます。マスタテーブルの値を参照。

↑はincludesで解決できそうなのですが問題は次の箇所です。

�Aにはhelperが使われていて
そのhelperが

�Bjyugyo 授業レコード(生徒が取っている授業)や
�Cnormal_diary 日記レコード(生徒の日記)や
�Dbukatsu_diary 部活日報レコード(生徒の部活の日報)があります

これらは全て1対多です(生徒:各テーブル)

そこで�Aをレンダーする際に
�B、�C、�Dへのリンクボタンも表示します。

ここで�Cと�Dについては、ボタンへ件数(カウント)の表示および、
本日の投稿があればボタンを赤く表示する、といった仕様にしています
(つまり10レコード表示すると、この処理×10回SQLが発生?)

なので、さきほどのincludes表記だけじゃ対処しきれないみたいです。

例えばnormal_diaryのhelperはこのようになっています。ですので都度SQLが発行されるのかもしれません↓
0523nobodyさん2013/07/19(金) NY:AN:NY.ANID:???
def normal_diary_button(student)
 last_diary = student.normal_diaries.order('created_at DESC').first
 if last_diary && last_diary.created_at.today?
  link_to sanitize("日記 ("+ student.normal_diaries.count.to_s+")" , normal_diaries_path(student), :class => 'red_color_button'
 else
  link_to sanitize( "日記 ("+ student.normal_diaries.count.to_s+")" , normal_diaries_path(student), :class => 'button'
 end
end

こんなかんじです
同様に�Dのhelperのbukatsu_diary_button(student)も
各�A(views/students/_student.html.erb)で呼び出されます。

その度にSQLが発行されます。
>>522に書いた

@students = Student.page(params[:page]).per(10).includes(:genders, :blood_types, :prefectures)

だけでは対処できません
0524nobodyさん2013/07/19(金) NY:AN:NY.ANID:???
https://www.google.co.jp/search?q=count+rails%E3%80%80site%3Astackoverflow.com
0525nobodyさん2013/07/20(土) NY:AN:NY.ANID:???
link_toを使うとそんなに重くなる?

まぁroutes.rbの記載量にもよるんだろうけど
1ページにどれくらいlink_toが出現してたら
顕著に遅さを感じるようになるんだろう?
0526nobodyさん2013/07/20(土) NY:AN:NY.ANID:???
RailsにおけるJSって、実際はサーバー立ち上げたら、ページごとに一つの.jsファイルにまとめられるんですかね?
0527nobodyさん2013/07/20(土) NY:AN:NY.ANID:???
precompileしてproduction環境で起動すればrequireしたものはひとつのファイルに連結される
0528nobodyさん2013/07/20(土) NY:AN:NY.ANID:???
"Entry"というモデル名をさける
http://www.ustream.tv/recorded/25419544

Enumerable#entries
http://ruby-doc.org/core-1.9.3/Enumerable.html
0529nobodyさん2013/07/20(土) NY:AN:NY.ANID:netzHBJp
ついでにrails4だと(つーかturbolinksを使うと)、
最初のページ以外ではJSの読み込み(とそれに続く評価)も行わないのがデフォ。
0530nobodyさん2013/07/20(土) NY:AN:NY.ANID:???
>>527
ありがとうございます
その連結したものってどこかで見れるのでしょうか

undifinedされていてどうも正常に読み込まれてない気がするんですが
0531nobodyさん2013/07/20(土) NY:AN:NY.ANID:???
>>530
production環境だとassetsじゃなくてpublicフォルダから読み込まれる
0532nobodyさん2013/07/21(日) NY:AN:NY.ANID:???
>>531
ありがとうございます
developmentでrails serverで起動しているときはどこに吐かれますか?
0533nobodyさん2013/07/21(日) NY:AN:NY.ANID:???
>>532
またいつもの教えてクンか
うざいよ
自分で調べなさい
0534nobodyさん2013/07/21(日) NY:AN:NY.ANID:z4jXw/gy
developmentでは通常連結せずに読む。ログにばっちり出てるやん。
0535nobodyさん2013/07/21(日) NY:AN:NY.ANID:???
>>533
自分で調べてわからないんです

>>534
ありがとうございます
するとdevelopmentでは読み込み順とかを確認するために生成されたjsを読むすることはできないんですか
0536nobodyさん2013/07/21(日) NY:AN:NY.ANID:???
http://ja.asciicasts.com/episodes/279-understanding-the-asset-pipeline
0537nobodyさん2013/07/21(日) NY:AN:NY.ANID:z4jXw/gy
development.rb に

config.assets.debug = false # 個別読み込みをしない
config.assets.compile = true # 連結などのコンパイル処理は行う

あたりを書けてみればどうか。
0538nobodyさん2013/07/21(日) NY:AN:NY.ANID:z4jXw/gy
debugの意味間違えたけど、まあいいか。
0539nobodyさん2013/07/22(月) NY:AN:NY.ANID:D6h65OPK
Amazon.co.jp: Ruby on Rails 4.0 eBook: Stefan Wintermeyer: Kindleストア
http://www.amazon.co.jp/gp/product/B00E25KVLW
0540nobodyさん2013/07/22(月) NY:AN:NY.ANID:???
とあるカラムに文字長のバリデーションを設定しようと思うんですが

半角英数字なら20字
日本語なら10字

みたいな設定の方法ってありますか?
UTF8になる前は
20バイトまで〜みたいな設定が出来たのでしょうが
今ではそういう類のことはどのように対応するのでしょうか?
0541nobodyさん2013/07/22(月) NY:AN:NY.ANID:???
>>540
validates length tokenizerでどうですか
0542nobodyさん2013/07/22(月) NY:AN:NY.ANID:???
>>541
調べてみたのですが
日本特有の問題?だからかなかなか参考が出てきません。

よければどういう書き方をすればいいか見せてもらえますか?
0543nobodyさん2013/07/22(月) NY:AN:NY.ANID:???
https://gist.github.com/takuya327/4974881
0544nobodyさん2013/07/22(月) NY:AN:NY.ANID:4qZfH6dA
>>540
混在したら何文字までになるんですか?
0545nobodyさん2013/07/23(火) NY:AN:NY.ANID:???
>>544
半角英数を1字につき1バイト
日本語だったら1字につき2バイト
といったかんじです
0546nobodyさん2013/07/23(火) NY:AN:NY.ANID:???
>>545
UTF-8の日本語は3バイトなの知ってる?
0547nobodyさん2013/07/23(火) NY:AN:NY.ANID:???
要は全角文字を2文字分として計算したいんだろ?
正規表現でもなんでも使ってやればいいじゃん
0548nobodyさん2013/07/23(火) NY:AN:NY.ANID:???
PostgreSQL カンファレンス 2013 &#8212; NPO法人 日本PostgreSQLユーザ会
http://www.postgresql.jp/events/jpug-pgcon2013
0549nobodyさん2013/07/24(水) NY:AN:NY.ANID:???
>>546
すみません
2バイトだと勘違いしていました

>>547
おっしゃる通りです
0550nobodyさん2013/07/24(水) NY:AN:NY.ANID:???
夢のない、クラウドソーシング。夢をみるクラウドワークス | つい全力ツッコミしてしまうエンジニアCEOのブログ | sumyapp
http://blog.sumyapp.com/2013/07/no-dream-crowdsourcing/
0551nobodyさん2013/07/24(水) NY:AN:NY.ANID:???
クックパッドの様なレシピ投稿サイトの構築 - ウェブシステム の仕事 | ランサーズ
http://www.lancers.jp/work/detail/171339
0552nobodyさん2013/07/24(水) NY:AN:NY.ANID:GIiGlKgV
今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 | つい全力ツッコミしてしまうエンジニアCEOのブログ | sumyapp
http://blog.sumyapp.com/2013/07/no-recommend-rails/
0553nobodyさん2013/07/25(木) NY:AN:NY.ANID:qrUaN9f/
料理レシピ投稿サイトの制作 - ウェブシステム の仕事 | ランサーズ
http://www.lancers.jp/work/detail/34672
0554nobodyさん2013/07/29(月) NY:AN:NY.ANID:???
セレクトボックス
テキストボックス(入力不可)
ボタン

があってセレクトボックスの初期値は空白
ボタンは押下不可

この状態でセレクトボックスで選んだ値でDB検索
値をテキストボックスに表示して、
1以上であれば、ボタンが押下可能になる


というのを作りたいんですが
どこからどこまでかJavaScriptで、どこからどこまでがRubyでやるのかわかりません

・セレクトボックスの選択と、選択した値を引数にしてRailsのアクションの呼び出しはJavaScript
・DB検索はRails


までは分かるのですが、ここから先、たとえばボタンのenabledを変更するのは誰がやるのでしょうか?
0555nobodyさん2013/07/29(月) NY:AN:NY.ANID:???
インクリメンタルサーチ
http://d.hatena.ne.jp/ooolong/20070202/1170393898
https://luna.easyjp.net/projects/memo/wiki/rails/Rails3サンプル/Yahoo路線のようなインクリメンタルサーチ

https://www.google.co.jp/search?q=rails+incremental+search+site:stackoverflow.com
0556nobodyさん2013/07/31(水) NY:AN:NY.ANID:???
時間かけて作り込んだのに
独自ドメインで公開開始してから4ヶ月。

会員数1000人
PV 3000/1日
UU  250/1日
google検索結果からの訪問 30/1日
yahoo検索結果からの訪問  25/1日

なんだかなぁ。。。。。
0557nobodyさん2013/07/31(水) NY:AN:NY.ANID:???
MySQLのクエリーで

WHERE now() > (end_date + INTERVAL days DAY)

これをrailsで書くならどうなりますか?
0558nobodyさん2013/07/31(水) NY:AN:NY.ANID:6YPlmowL
daysは可変パラメータ?

where( [ 'NOW() > end_date + INTERVAL ? DAY', days ] )
0559nobodyさん2013/07/31(水) NY:AN:NY.ANID:???
>>558
ありがとうございます。
daysはカラムです
0560nobodyさん2013/08/03(土) NY:AN:NY.ANID:???
自分でサーバ立てるのってなんか楽しそうだしスゴそうだよね?
サーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ハードウェアの多重化なんて必要?
企業で使うとかじゃなく個人的に細々と立てたサーバが攻撃されることなんて滅多にないよね?
攻撃が来るって言ったって大した数じゃないんでしょ?
攻撃されたって大したことは起きないんでしょ?
http://b.hatena.ne.jp/entry/tmaeda.s45.xrea.com/20041101.html

ITmedia エンタープライズ:自社サーバがフィッシングサイトに「踏み台化」されたら? (1/3)
また、電源を切ってしまうことも良い対応ではない。
オンメモリ上で稼働しているフィッシングサイトの場合は、電源を切ることによって、すべてのデータが消えてしまい、原因究明や対応に遅れなどが出ることも考えられるからだ。
 事実、フィッシングサイトを構成するツールの中には、後に証拠が残らないよう、すべてがオンメモリ上で動作するものがある。
このような場合、再起動や電源オフによって、メモリ上にあるすべてのプログラムやファイルが消え、事実や原因の確認が困難になる。
http://www.itmedia.co.jp/enterprise/articles/0603/17/news004.html
0561nobodyさん2013/08/07(水) NY:AN:NY.ANID:aOWd/F64
Why Nobody Should Use Rails | Hacker News
https://news.ycombinator.com/item?id=6168885

http://blog.bensigelman.org/post/57543889435/why-nobody-should-use-rails-for-anything-ever
0562nobodyさん2013/08/07(水) NY:AN:NY.ANID:???
質問です

link_to "hoge", hoge_path(:key => foo)

といったlink_toを様々なページで多用しています。
しかし、条件分岐でkeyのパラメーターをつけるか付けないかを分けたいです。

hoge_pathのpathの部分だけを
helperのようなかんじで
呼び出し型にすることは可能ですか?
その際に呼び出し側から引数も渡すかんじで
0563nobodyさん2013/08/07(水) NY:AN:NY.ANID:???
Mixiでいうところの足跡機能をRailsで導入するとしたら負荷はハンパない?

ユーザー数が10000人として
仮に5000人がページ遷移して
お互いユーザー同士のページを表示する度に
足跡レコードを生成してたら
データベースの負荷はハンパないですよね?
ユーザー数の増加も考慮すると現実的でない?
0564nobodyさん2013/08/07(水) NY:AN:NY.ANID:3f/GYhsz
水道管の値段と水の流量を考える。
太い水道管を用いるとたくさんの水が流せるが、水道管の重量が増えるため水道管に必要な費用が大きくなる。
逆に水道管を細くすると重量の軽い水道管になるので水道管に必要な費用は少なくて済むが、少ない量の水しか流せなくなる。
このように、水量の多さを重視すると費用が犠牲になり、費用の安さを重視すると流せる水の量が犠牲になるという関係にあり、
流せる水量の多さと費用の安さはトレードオフの関係にある。
http://ja.wikipedia.org/wiki/トレードオフ
0565nobodyさん2013/08/07(水) NY:AN:NY.ANID:???
>>564
そんな一般論はいりません
0566nobodyさん2013/08/07(水) NY:AN:NY.ANID:???
一秒は1000ms

シーク時間はシーク範囲によって異なりますが、仮に 5ms とした場合、並列でI/Oを出せない IDE では 200 IOPS が限界となります。
http://pc.casey.jp/archives/153904156

http://e-words.jp/w/IOPS.html  

Amazonクラウド、2テラバイトのSSD、60GBメモリ搭載で12万IOPSを実現するインスタンスを発表 − Publickey
http://www.publickey1.jp/blog/12/amazon2ssd60gb12iops.html
0567nobodyさん2013/08/07(水) NY:AN:NY.ANID:aOWd/F64
水道管とIOPS
0568nobodyさん2013/08/07(水) NY:AN:NY.ANID:???
Standardボリュームは1ボリューム当たり平均約100 IOPSで、
ベストエフォートながら、数百IOPSまでバースト可能というパフォーマンスレベル。
http://www.atmarkit.co.jp/news/201208/02/aws.html

ioDriveは10万IOPS、SSDも3.6万IOPSほどでした。
ハードディスクでは数百から千ぐらいのIOPS
http://internet.watch.impress.co.jp/docs/special/20120731_549042.html

まさに怪物! Fusion-ioが容量10テラバイト/性能130万IOPSのフラッシュドライブ「ioDrive Octal」発表 − Publickey
http://www.publickey1.jp/blog/11/_fusion-io10130iopsiodrive_octal.html

IOPSは、ディスクが1秒当たりに処理できるI/Oアクセスの数である。
IOPSが高ければ高いほど、高性能なディスクと言える。
http://itpro.nikkeibp.co.jp/article/lecture/20070104/258117/
0569nobodyさん2013/08/07(水) NY:AN:NY.ANID:???
Fusion-io、10億IOPSの新技術「Auto Commit Memory」発表。ストレージなんてレベルじゃない、パーシステントなメモリだ − Publickey
http://www.publickey1.jp/blog/12/fusion-io10iopsauto_commit_memory.html
0570nobodyさん2013/08/07(水) NY:AN:NY.ANID:???
>>563
RDBSじゃなくてmongodbとかredisを使え
0571nobodyさん2013/08/07(水) NY:AN:NY.ANID:???
>>570
どうして?
0572nobodyさん2013/08/07(水) NY:AN:NY.ANID:???
>>570
基本のDBはMySQLで
そういった足跡みたいに頻繁にRead/Write処理が行われる部分だけは
mongodbとか
Railsでは可能なの?
0573nobodyさん2013/08/07(水) NY:AN:NY.ANID:???
ちょっと横入りして悪いんだけど、
モデルを新規作成する際は、とりあえずはscaffoldを利用して、
controllerなども作っておく場合が多い?
それともモデルのみ作成で、必要になってからcontrollerを作成?
今は確定していないけど将来的にcontrollerを使うかも?って感じの微妙なモデルの場合なんだけど。
0574nobodyさん2013/08/07(水) NY:AN:NY.ANID:1ogPlLd9
片方だけ作るときはコントローラから作ってる気がする。

リソースとして何が必要になるかを考える。
リソース名にマッピングされるのはモデルではなくコントローラ。
という順番。
0575nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
>>572 モデルにestablish_connection を入れればテーブルごとに接続先の変更も可能なので問題ないかと思います。

関連で質問です。
Rails4.0で
self.abstract_class = true と establish_connection xxx  
を入れたクラスを継承したモデルがあり、
テーブルのカラム名に「catch」や「x」 を使っていたため
@model.catch
@model.x
を実行したときにprivateメソッドを呼びだしたことになって
エラーを起こしてしまいます。
3.0の頃は問題なかったのですが…。

何かよい対処方法ありませんか?
0576nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
>>572
余裕でできる
そもそもRDBSとの連携はモデルにデフォルトで書かれてるActiveRecordの記述だけで
Mongoidをincludeするだけでそのモデルはmongodb用に使える(接続用のconfigファイルを作成する必要あり)
0577nobodyさん2013/08/08(木) NY:AN:NY.ANID:x7tUE+P1
MongoDB Plans & Pricing with MongoHQ
http://www.mongohq.com/pricing

Plans and Pricing | MongoLab: MongoDB-as-a-Service
https://mongolab.com/products/pricing/
0578nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
>>576
ならどうして最初からすべてmongodbでやらないの?

mongodbはMySQLに比べて
圧倒的に早いんだよね?

自分の認識では
mongodbってmemcachedの
フラグメントキャッシュみたいに
キーと内容だけを保持するシンプルなもの
なんだけどあってる?
だからこそ使い勝手が悪いから
単純なところのテーブル(DB)だけを
mongodbで実装

あってる?
0579nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
みんなは4.0に移行してるようだけど
そんなにメリットあるかいな?

使えるgemはほとんど未対応だろうし
0580nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
> 使えるgemはほとんど未対応だろうし
ずいぶんとまぁ印象だけで語ってるなぁ
0581nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
>>578
mongodbはスキーマレスな上に、各々が配列やハッシュを持てるからRDBSよりも自由度がはるかに高い
書き込み性能は段違いだが、読み込み速度は大差ないか劣る可能性もある
最大の弱点はトランザクションが効かないことで、テーブル構成が複雑で整合性が必要な箇所には使われない

だから使い分けが必要なの

わかる?
0582nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
>>579
ほとんど対応してますね
0583nobodyさん2013/08/08(木) NY:AN:NY.ANID:???
すみません、質問させてください。

RoRでirbを使用してデバッグしているのですがhelperのメソッドを更新してreload!を実行したのですが、更新がされず毎回exitして再度irbを立ち上げてる状況です。

すでに定義済みのメソッドの中身を書き換えてもreload!では反映されないのでしょうか?
05844462013/08/10(土) NY:AN:NY.ANID:OMYv+fV8
>>456
質問させていただいた件、解決しました。
書込みができなかったのでお礼が遅れてしまいましたが、ありがとうございました。
0585nobodyさん2013/08/12(月) NY:AN:NY.ANID:???
ActiveRecordで


| id. | language |typed│
|001| Ruby   │  0│
|002| Perl   │  0│
|003| Python │  0│
|004| C++   .│  1│
|005| Java  │ 1│


こんな感じの検索結果を受け取ったときに、そこで更にtypedによってレコードを分割したいときは
どうすればいいでしょうか
0586nobodyさん2013/08/13(火) NY:AN:NY.ANID:ZYgjO/1S
result = Language.where(なんか条件)
のようにして >>585 の結果を得ているとする。

A: DBから別々に取ってくる

result はActiveRecord::Relation のインスタンス(まだ配列は返ってきていない)だが、
これはさらに条件を . でつなげることが出来る。この場合、ANDで条件を追加する形になる。

typed = result.where(typed, 1)
typeless = result.where(typed: 0)

2つの変数ともに Relation のまま(= 必要になるまでSQLは実行されない)。
必要なら to_a とか。大抵ぎりぎりまで Relation のままでOKなはず。

B: Rubyレベルで分ける。

こっちだと、SQLを実行してレコード一式読み込んでから、メモリ内で分ける。

B-1: Enumerable#partition を使う

2つに分けるなら partition が使える。

typed, typeless = result.partition{|x| x.typed == 1 }

B-2: Enumerable#group_by を使う

lang_groups = result.group_by {|x| x.typed }
typed = lang_groups[1]
typeless = lang_groups[0]
0587nobodyさん2013/08/13(火) NY:AN:NY.ANID:ZYgjO/1S
>>583

アプリ生成後のREADMEによれば、 reload! でリロードされるのはコントローラと
モデルのコードだけのような。
0588nobodyさん2013/08/13(火) NY:AN:NY.ANID:???
>>586
ありがとうございました
0589nobodyさん2013/08/15(木) NY:AN:NY.ANID:9ap0WrHO
暗号化通信サービスが沈黙
http://blog.f-secure.jp/archives/50708704.html

http://jp.wsj.com/article/SB10001424127887323338404579001681390701184.html
0590nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
assetsのプリコンパイルする意味って何ですか?

そんなに速度が変わりますか?

プリコンパイル実行で毎回5分ほど待たなきゃいけないし
画像一つ追加するのにこれだけ大変だから気になりました

画像一つフォルダにつっこんで
イメージタグを記述のほうが楽ですので。
0591nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
rails4にすればプリコンパイルは早くなるよ(たぶん
0592nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
要らないなら無効にすればいいんじゃないの。
0593nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
ドットインストールの講座を進めているんですが、#37〜#41でハマりました。
下記のエラーがどうしてもわかりません。
ActionController::RoutingError (uninitialized constant CommentsController):

環境はruby:2.0,rails:4.0です。
環境が新しくなったことの弊害だと思うのですが、どなたか教えていただけると有り難いです……
ちなみにrake routesでルーティングはしっかりできているように見えます
0594nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
>>593
ソースはらないと分からん
05955932013/08/16(金) NY:AN:NY.ANID:???
>>594
失礼しました。
下記がソースです、見られるでしょうか。
https://github.com/248/rails_blog

RoutingErrorが出ているものをコミットしてあります。
0596nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
>>595
また教えクンか

ググれ
0597nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
>>595
ggrks
0598nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
>>596
しね
0599nobodyさん2013/08/16(金) NY:AN:NY.ANID:???
>>598
うるさい
0600nobodyさん2013/08/17(土) NY:AN:NY.ANID:???
>>593
コントローラの名前が間違ってる。
coments_controller.rb
↓
comments_controller.rb
06015932013/08/17(土) NY:AN:NY.ANID:???
>>600
指摘の通り名前のミスでした。
自分では見たつもりだったのですが、気づきませんでした。
有難うございます。
0602nobodyさん2013/08/17(土) NY:AN:NY.ANID:???
uninitialized constant CommentsController

って書いてあるんだからもうちょっと注意してたら分かったかもね!頑張って!
0603nobodyさん2013/08/17(土) NY:AN:NY.ANID:LZQA7c0b
ActionController::RoutingError (uninitialized constant CommentsController):

ActionController:: RoutingError(定数CommentsControllerを初期化されていない):

翻訳
http://translate.google.co.jp/
0604nobodyさん2013/08/17(土) NY:AN:NY.ANID:???
http://hayabusa3.2ch.net/test/read.cgi/morningcoffee/1366274651/l50

【芸能】女優の日南響子(19)、車にひかれ一時意識不明に 「フラフラと放心状態、車道に自ら入って行ったようにも見えた」と目撃談★2
http://awabi.2ch.net/test/read.cgi/mnewsplus/1376716736/l50
0605nobodyさん2013/08/19(月) NY:AN:NY.ANID:???
https://twitter.com/makotokuwata/status/369178911852085249
https://blog.twitter.com/2013/new-tweets-per-second-record-and-how
0606nobodyさん2013/08/19(月) NY:AN:NY.ANID:???
なぜ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
0607nobodyさん2013/08/19(月) NY:AN:NY.ANID:???
localeについてだけど
viewで適用させる方法は分かるけど

controllerで判断させるにはどうすればいいの?
やっぱりあらかじめ
localeファイルに各文章を格納してて
それをコントローラーで読み込まなきゃダメ?
0608nobodyさん2013/08/19(月) NY:AN:NY.ANID:???
何を判断させたいのか分からない
多言語対応させたいってこと?
0609nobodyさん2013/08/19(月) NY:AN:NY.ANID:/LpY+15W
i18n
0610nobodyさん2013/08/21(水) NY:AN:NY.ANID:???
assetsのpreconpileって
javascriptのコードを他人にパクられるのを防ぐ抑止力になる?
0611nobodyさん2013/08/21(水) NY:AN:NY.ANID:???
多少難読化はされるからなるといえばなるかもしれないけど
関係ない部分含めて丸パクされたら結局パクられるからならないともいえるかもしれない
0612nobodyさん2013/08/21(水) NY:AN:NY.ANID:???
>>611
関係ない部分も含めて丸パクってどういう意味?

javascriptをパクられなくするのって無理だよね
0613nobodyさん2013/08/21(水) NY:AN:NY.ANID:???
>>612
precompileするとコード全部ひとまとめにされるじゃん?
それ丸ごとコピペすればパクることができるじゃん?
って言うアホみたいな意味しかないです

あくまで抑止力って話でしょう
0614nobodyさん2013/08/21(水) NY:AN:NY.ANID:???
javascriptをパクられないようにするのは無理だから
パクられてもいいようなものしか書かない
あとは工夫してサーバーサイドと組み合わせて何とかする
0615nobodyさん2013/08/21(水) NY:AN:NY.ANID:???
>>613
>>614

ありがとうございます


たとえば、とあるサイトのhtmlソースを取得して
その中からクレイピングするのを

javascriptで実施したら
とあるサイトに残るアクセスログのIPはクライアントPCのIP

サーバーサイドで実施したら
とあるサイトに残るアクセスログのIPはサーバーPCのIP

という認識であってますでしょうか?
0616nobodyさん2013/08/23(金) NY:AN:NY.ANID:cyaglvKC
<%=text_area_tag('hage', "<%= @hoge%>", :rows=>20, :style=>"resize:none;") %>

これがコンパイル通りません
どうしてでしょうか
0617nobodyさん2013/08/24(土) NY:AN:NY.ANID:???
>>616
<%= %> の中は Ruby のコードを書く
"<%= @hoge %>" は Erb のコード
@hoge.to_s に直せ
0618nobodyさん2013/08/24(土) NY:AN:NY.ANID:???
>>617
ありがとうございました。
0619nobodyさん2013/08/24(土) NY:AN:NY.ANID:???
事情があってGETとPOSTを同じアクションにせざる得ないんですが
いったんPOSTしたあと、ブロウザを更新してしまうと、
またPOSTさせてしまうことになります。

POSTさせたあとは、ヘッダーを書きかえるとかはRailsでは可能なんでしょうか
0620nobodyさん2013/08/24(土) NY:AN:NY.ANID:c/4DiZCS
POST後はリダイレクト入れるんじゃないの?
0621nobodyさん2013/08/24(土) NY:AN:NY.ANID:???
>>620
リダイレクトさせたら、結果を渡す方法がないんです。
flashに入れる値がありません
0622nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
初歩的かもしれませんが質問させてください

たとえばRecordモデルの中に
integerのカラム「time」があったとします

timeにはマラソンの結果タイムが秒単位で格納されます

一時間の場合→3600 (1時間)

そのときに
3600→ 01:00:00
1815→ 00:30:15
のように変換して表示させたいです。

そこでapplication_helperに変換用の関数を作りました。
しかし、1ページ内で1000レコードを表示するとしたら、
ページのロード時に関数の呼び出しが毎回1000回行われ計算されます。
これは現実的ではないですよね?

それとも、このくらいの計算ならhelperでも問題ないですか?

�@helperで関数呼び出し表示
�Aレコードが作成される時点で表示用stringカラムを準備しておいて保存→表示時はこれを表示

どちらの設計手法が一般的か教えていただければ幸いです。
0623nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
>>622
1. だな
それぐらいの変換、大したコストじゃない
0624nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
>>623

ありがとうございます

処理負荷コストで考えるべきは
mysqlなどデータベース関連のクエリくらいですか?

だからcountとかはカウンターキャッシュで処理?

rubyの演算だけで処理できる部分はhelperでOK!くらいの考えでいいですか?
0625nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
>>623
ただ1000レコード表示(helperの関数を1000回呼び出し)されるわけですが

仮にこのページを1000人が同時に開こうとする場合

1000人×1000回計算→100万回の計算が行われますよね

これでも�@のhelperに頼るやり方が正攻法ですか?
0626nobodyさん2013/08/25(日) NY:AN:NY.ANID:+qyGnGoh
悩むのは速度が実際に問題になってからでいいよ。

Premature optimization is the root of all evil. --D. E. Knuth
0627nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
>>626
慣例としてはどうでしょうか
0628nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
パフォーマンスチューニングの点から言うと、優先順位はかなり低いでしょう。
データの完全性という点でも、安易に表示用カラムを追加することは
お勧めできません。

大きなお世話でしょうが、私ならまずは1ページに1000レコードを
表示する設計の方をどうにかします。
0629nobodyさん2013/08/25(日) NY:AN:NY.ANID:???
>>628
あなたなりのパフォーマンスで気遣う設計の点ランキング5
を教えて下さい
0630nobodyさん2013/08/26(月) NY:AN:NY.ANID:???
>>625
そんなこと心配するぐらいなら、100万回DBにアクセスされる方を心配しろよ
0631nobodyさん2013/08/26(月) NY:AN:NY.ANID:???
一秒は1000ms

シーク時間はシーク範囲によって異なりますが、仮に 5ms とした場合、並列でI/Oを出せない IDE では 200 IOPS が限界となります。
http://pc.casey.jp/archives/153904156

http://e-words.jp/w/IOPS.html  

Amazonクラウド、2テラバイトのSSD、60GBメモリ搭載で12万IOPSを実現するインスタンスを発表 − Publickey
http://www.publickey1.jp/blog/12/amazon2ssd60gb12iops.html
0632nobodyさん2013/08/26(月) NY:AN:NY.ANID:???
622さんと似てますが、データの検索用カラムを追加するのは不自然なのでしょうか。
Book.joins(:author).where("authors.name = ?", name).order(:created_at)
上記のようなのを高速化したくてBookにauthors_nameというカラムを追加したのですが。
0633nobodyさん2013/08/26(月) NY:AN:NY.ANID:ETC/yj1b
で、何パーセント高速化したん?
0634nobodyさん2013/08/27(火) NY:AN:NY.ANID:???
3回平均で73%です。
カラムを追加した方はindexを利用出来てます。
0635nobodyさん2013/08/27(火) NY:AN:NY.ANID:rt0S8jbJ
ハードディスクのIOPSは100から200程度だが、SSDは数千から数万IOPSと大きな差がある。
http://itpro.nikkeibp.co.jp/article/COLUMN/20110606/361088/
0636nobodyさん2013/08/28(水) NY:AN:NY.ANID:???
>>632
データ量次第だけど、あまりそこで正規化崩したくないなぁ。
本-著者の関連テーブルにインデックス張ればなんとかなったのでは感も。
0637nobodyさん2013/08/28(水) NY:AN:NY.ANID:???
あと、MySQLみたいにあまりjoinが強くないRDBMSなら
Author.where(name : name).books
みたいに二回クエリ投げる方が早かったりするかも。
0638nobodyさん2013/08/28(水) NY:AN:NY.ANID:72lLJVGO
<% if value %>
<div class="hoge">Hoge</div>
<% end %>


これを一行で書く方法はないのでしょうか。

<%="<div class='hoge'>Hoge</div>" if value %>
としたらエラーが出ました。
0639nobodyさん2013/08/28(水) NY:AN:NY.ANID:Me59r7Ml
パーシャルにするくらいかねぇ
<%= render partial 'hogediv' if value %>
0640nobodyさん2013/08/28(水) NY:AN:NY.ANID:Me59r7Ml
すぐ気付くと思うけど partial: デス。
0641nobodyさん2013/08/28(水) NY:AN:NY.ANID:???
<% if value %><div class="hoge">Hoge</div><% end %>

ほれ一行
0642nobodyさん2013/08/28(水) NY:AN:NY.ANID:???
>>639-641
ありがとうございました
無理なんですね
0643nobodyさん2013/08/28(水) NY:AN:NY.ANID:???
>>636
ありがとうございます。
mysql だと複数のテーブルから検索したり並べ替えすると
explain で using temporary, using filesort が出ちゃうんですよね。
検索すると正規化を崩すしかないと書かれていた・・・
よくある問題だと思うのでどう対処されてるのか知りたかったんです。
0644nobodyさん2013/08/28(水) NY:AN:NY.ANID:???
>>642
value を定義したら >>638 のままで動いたよ。rails4。
ただ html_safe しないとエスケープされた。
<% value = true %>
<%="<div class='hoge'>Hoge</div>".html_safe if value %>
0645nobodyさん2013/08/29(木) NY:AN:NY.ANID:z/QhLx6C
http://dotinstall.com/lessons/basic_rails/6505

本当に異次元に低レベルの質問で恐縮なのですが、
ここで使われているファイルを一覧できるツールというのは、
例えばどういったものがオススメなのでしょうか?

というか、私は、このツールに辿り着いていません。
深夜・週末起業家というのもあって気持ち悪い程低レベルかもしれませんが、宜しくお願い致します。
0646nobodyさん2013/08/29(木) NY:AN:NY.ANID:z/QhLx6C
すみません。
自己解決しました。
失礼いたしました。
0647nobodyさん2013/08/29(木) NY:AN:NY.ANID:z/QhLx6C
すみません。
解決してませんでした。
すみません。
0648nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
Windowsならエクスプローラーでもなんでもいいと思うけど・・・
ボクはWindowsでもLinuxでもemacsのdiredで確認してます。

もう少しコンピュータ全般の事を学んでからじゃないと
railsに限らずサイトを作るのは難しいかもしれません。
0649nobodyさん2013/08/29(木) NY:AN:NY.ANID:z/QhLx6C
ありがとうございます。
仰る通りですね。先にアイディアが浮かんだので手当り次第にプログラム関係本を読んではいますが、教養的に幅広く習得するにはかなりかかりますね。
実の所、今日、webrickを開けたばかりです。

dired含め調べてみます。ありがとうございました。
0650nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
emacs使ってないならdiredは調べなくても良いと思いますよ!
小規模ならrailsよりsinatraの方がシンプルで良いかもしれません。
0651nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
>>643
>>637みたいに著者で絞り混んで、著者の本を取ってくるっていう二回クエリ投げるのはどうよ。
これはjoinする訳じゃないからMySQLでも十分早いはずだよ。

DB⇔rails間がネットワーク的に細かったり遠かったりという事情がない限りこれで問題ないかと。
0652nobodyさん2013/08/29(木) NY:AN:NY.ANID:ZEP+9UcV
High Performance Rails (long edition) // Speaker Deck
speakerdeck.com/mirakui/high-performance-rails-long-edition
0653nobodyさん2013/08/29(木) NY:AN:NY.ANID:ZEP+9UcV
Rails Hub情報局: 素人がWebサービスを作ってみて分かった9つのこと
el.jibun.atmarkit.co.jp/rails/2011/09/web9-1e8b.html

スタートアップ企業で8年間Webの開発をしてみての反省点いろいろ - Masatomo Nakano Blog
独自フレームワークはやめよう
6. サーバ周りの人材をしっかり確保しよう
b.hatena.ne.jp/entry/blog.madoro.org/mn/84

Ruby on Rails が簡単というのはウソ - #生存戦略 、それは - subtech
subtech.g.hatena.ne.jp/secondlife/20120309/1331279496
0654nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
@users = User.joins(:profile).order('profiles.prefecture DESC')

みたいなことをしてUser群を抽出しても

レンダーするときに再び
User1レコードごとにsqlクエリを吐き出してるっぽいです。

これはどうしてですか?
お陰で体感ロード時間が遅いです。

ロード時間をマシにするなら
joinsの代わりにincludesとかを使うんでしょうか?
0655nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
そうだよ。includesを使う。N+1問題という。
joinsは上の例で言うとprofileのカラムから検索"だけ"したい時に使う。
includesでも検索出来るけど、rails4からはreferencesを指定しないと警告される。
0656nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
>>655
ありがとうございます

例えば世界中のサッカーリーグで考えると

Country (それぞれの国)
Team (プロリーグのチーム)
User (プロサッカープレイヤー)
Profile (プレイヤーの詳細プロフィール)
Mvp (国を代表するトップ選手)
の5つのモデルがあるとします

Countryは複数のTeamを持っています。
同様に国ごとで
複数のMVP(プレイヤー)を持っているとします。

Teamには複数のUserが所属していて、
Userはそれぞら1つのProfileをもっていたとしたとき

国単位で見たときにこれら全てをincludesするなら

@coubtry = Country.find(params[:id]).includes(teams: [users: [:profiles]], mvps: [users: [:profiles]] )

のようにすればいいのでしょうか?
0657nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
has_one だから profile になると思います。
includes(:teams => {:users => :profile}, :mvps => {:users => :profile})
0658nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
あとincludesはそこに書くとエラーになるから
Country.includes(hogehoge).find(1) となりますね。
0659nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
>>657
>>658
ありがとうございました

非常に参考になります
試してみたところ
なぜか変更以前よりロード時間が長くなりました

sqlの数は明らかに減ってるんですが。。。。

こういうこともあるんですね。
0660nobodyさん2013/08/29(木) NY:AN:NY.ANID:???
>>651
それだと問題なくindexも使えますね。
ベンチマークでは、最初に作者を検索するのことを除外すれば
カラムを追加したのと同程度の結果になりました。

ただ、元になる作者が複数、たとえば
Author.where(sex: "man") これらの本が欲しいとなると・・・
0661nobodyさん2013/08/30(金) NY:AN:NY.ANID:???
includes使いながら、JOIN先のカラムで検索する方法ってなかったっけ
あんま知られてないけどあった気がするが…思い出せん
0662nobodyさん2013/08/30(金) NY:AN:NY.ANID:???
>>644
Rails3.2でも動作確認しました
ありがとうございました
0663nobodyさん2013/08/31(土) NY:AN:NY.ANID:pHhaBgx0
winscpを選びました。
先輩諸氏に感謝しております。
今後もお世話になるかと思いますが宜しくお願い致します。
0664nobodyさん2013/09/01(日) 21:16:06.01ID:???
ECサイトを構築しているのですが、注文内容の入力→確認→完了というプロセスを経る際に
完了でsaveメソッドを呼び出す前に確認の時点でバリデーションを行い、エラーメッセージを出力したいのですがどうしたらいいでしょうか
new→valid?メソッドでバリデーションの成否自体を行うことはできるのですが、エラーメッセージの出力がわかりません
0665nobodyさん2013/09/01(日) 21:25:12.30ID:???
すいません自己解決しました
下のリンクを読めば簡単でしたね
ttp://yoshitetsu.rackbox.net/active_record_validations.html
0666nobodyさん2013/09/02(月) 07:55:13.98ID:???
Rails4ってどう?
0667nobodyさん2013/09/02(月) 10:56:10.90ID:???
turbolinks外すと3とそんなに変わんない気がする
キャッシュ関係がよく分からない
0668nobodyさん2013/09/03(火) 03:13:00.11ID:???
strong parameterは重要だと思う
記法やモデルのメソッドが追加されたり小さな変更はそこそこあるけど、確かに大きな変更点はあまりない印象だね
というよりRails自体が成熟してきてるのが原因だと思うが
0669nobodyさん2013/09/03(火) 07:33:17.72ID:???
Railsとcakephpだと
cakephpのほうが体感的に早くない?
0670nobodyさん2013/09/03(火) 08:33:07.31ID:???
ActiveSupport::Queueってどうなったんでしょうか。
masterブランチにもないし、今後も取り込まれそうにない?
0671nobodyさん2013/09/03(火) 08:56:33.25ID:???
ベンチマークでは、RailsとCakeはそんなに変わらなかった気がする
ちなみにCakeはPHPフレームワークの中では最遅の部類
0672nobodyさん2013/09/03(火) 10:52:00.37ID:GPnijyFs
>>669

>>96
0673nobodyさん2013/09/03(火) 21:39:32.25ID:LahgdGM9
他人が作ったRailsアプリを保守する側に回っていて、約束事が多すぎて正直よく分からないのですが・・・
Rails3.2では、assets/javascripts以下に配置された.jsは基本的に全て読みこまれるんですよね?


とりあえず、Rails側からデータをassets/javscripts/***.jsに渡したいのですが、
その場合、HogeControllerが、hoge.html.erbに書いた<%= @hoge.json %>にまずJSON形式でグローバルスコープで書きだしてから、
assets/javscripts/***.jsからその書きだしたJSONを参照するしかないのでしょうか?


この方式を採用したら、ユーザーが現在見ているHTMLのソースに
{"name": "Hoge", "age": Hage } とかデータがそのままべた書きされてしまうのでできれば避けたいのですが・・・


他に何かいい方法はありますか?
0674nobodyさん2013/09/03(火) 22:13:36.80ID:08+4VxZe
>>670

今後どうなるかは分からんけど、 rails-queue という gem に切り出されているのを
3.2 で使っている。

>>673

JSONを吐くリソースURLを用意して、JSからそこにリクエストすればいいのでは?
0675nobodyさん2013/09/03(火) 23:23:49.53ID:???
>>674
それもいいかもしれませんが、
実はHogeControler#indexの中で既にそのレコードは呼び出していて、そこからhoge.erb.htmlだったり、.jsだったりが描画されるんです。

それだったら、.jsからまた改めてそのレコードを呼びだすAPIを叩いてレコードをまた読み込むよりは、
HogeControler#indexが終わって、Viewをレンダリングするときに、そのレコードをViewに渡したほうがよくないでしょうか・・・・


もちろんそう重いクエリではないので、二度クエリを実行してもそこまでパフォーマンスは低下しませんが・・・
0676nobodyさん2013/09/04(水) 00:06:31.28ID:???
>>675

Viewに渡して処理していいなら、それでいいと思うよ。
最初に>>675がjsに渡したいって書いたから>>674のような答えになるわけで。
0677nobodyさん2013/09/04(水) 00:35:27.95ID:???
>>676
説明不足ですいませんでした
でも直接見ているHTMLにJSON形式でべた書きしたくないんですね。。。
せめて外部.jsに吐くならともかく。
0678nobodyさん2013/09/04(水) 07:35:09.98ID:???
>>677
外部jsに吐くなら、それはすなわち2度リクエストが行われることになるわけで…

どうしてもというなら、HTMLを返すリクエストの中でDBから取得したレコードをキャッシュしておいて、
JavaScript/JSONのリクエストの際にそれを使うとかしかないが、そこまでするならHTMLに直接
書く方を選ぶな。
0679nobodyさん2013/09/04(水) 12:59:09.84ID:???
ローカル開発環境でSSLと非SSLを混ぜて開発したいと思い
ttp://www.ummm.info/blog/59

こちらの記事を参考にproxy_passで対応したのですが、ssl_requirementでリダイレクトをすると
内部で動いているlocalhost:3000の方に移動してしまい、上手い具合に混在させることができません

他に良い方法がないか、もしくは現在の方法下においての解決法があれば教えて下さい
0680nobodyさん2013/09/04(水) 15:28:03.58ID:???
>>673

***.js.erb にして HogeController から js で render するのは?
やりたいことがいま一つわかってないけど。
0681nobodyさん2013/09/04(水) 18:30:59.82ID:???
>>678の言うようにHTMLにべた書が一番良いと思う。
特に関係ない人に見られて困るデータだと、publicに書き出すわけにもいかず、
新たにアクションはやして判定処理もしなきゃいけなくなる。
0682nobodyさん2013/09/04(水) 20:48:35.62ID:???
>>678
>>681
分かりました。ありがとうございます。
嫌だったのは、ソースの中にこんなのが書かれてしまうんですよねえ・・・。

<script type="text/javascript">
   {"name":"Hageo Hoge","age":"17","address":"Tokyo"}
</script>

まあリクエストした本人が過去に投稿した情報ですから本人に見えてしまうのは仕方ないんですが。

>>680
すいませんが、Controllerからjsでrenderってどうやるのでしょう?

やりたいことは、要はControllerから、TEXT(JSON)にしてから渡すのではなく、JSのオブジェクトをそのまま渡したいってことです。

<script type="text/javascript">
var object = <%= @hoge.to_json.html_safe %>
</script>

これは結局↓みたいに変換されてしまい、ソースを見たらデータが見えてしまってあまり好きじゃないのです・・・。

<script type="text/javascript">
var object = {"name":"Hageo Hoge","age":"17","address":"Tokyo"}
</script>


関係ないですけど、Viewから<%= render(:partial => "main/hoge") %>で_hoge.js.erbを描画しようとしたら、
_の有る無しにかかわらずRails3.2では無理でした・・・。
0683nobodyさん2013/09/04(水) 20:53:34.43ID:0bOgciHM
すみません。質問というか助けてほしいです。心当たりあったらレスおねがいします。

rails 4.0でnginx+unicornな環境を構築中なのですが
webrickで動作させてたときはもんない無かったのにnginx通してunicornで動作するようにしたら
layout/apprication.html.erbのtylesheet_link_tag とかjavascript_include_tag で吐き出される
assetへのパスが
/assets/application.css?body=1
↓
5000/stylesheets/5000/assets/application.css?body=1

何故かunicornの動作ポート番号をパスに含むようになって、ルーティングエラーを起こすようになってしまった。

ルーティングエラーがおこらないように、元のwebrick環境のassetへのパスが表示されるように戻したいのだけども
誰か心当たりあるかたいませんか?
0684nobodyさん2013/09/04(水) 22:40:41.73ID:???
>>682
外部ファイルにしようがAjax使おうが、中身を見ようと思ったら簡単に見えるものなんだから、気にし過ぎ
0685nobodyさん2013/09/04(水) 22:45:54.82ID:???
心当たりはないが、ドメインソケットを使ってなさそうなことが気になった。unicorn使うならドメインソケットで接続しようや。

X-Forwarded-For とかがきちんと設定されてないとかもあるかもな。
0686nobodyさん2013/09/04(水) 22:47:36.17ID:???
>> 682
直接見られるのが嫌なら、Rubyで暗号化した状態でJSON出力してJavaScript側で複合化すればいい。
まぁ、それでも少し詳しいユーザがJS側のソースを見れば解読できるけど、ベタ書きよりは良いかもね。
0687nobodyさん2013/09/04(水) 23:24:04.50ID:0bOgciHM
>>685
レスありがとうございます。

nginxの設定ではX-Forwarded-For 周りは下記のように設定しています。
ドメインソケットでの接続というのがどういうことなのかわからなかったですが
upstreamでunicornのソケットファイルを指定してリバースプロキシするように設定しました。

upstream backend {
server unix:/tmp/unicorn.sock;
}

server {
listen 80;
server_name localhost;

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) { proxy_pass http://backend; }
}
}
0688nobodyさん2013/09/05(木) 00:27:18.86ID:???
>>684
>>686
分かりました。素直に外部ファイルにはくことにします。

・・・ですが、すいません、***.html.erbではなくて、外部jsにはくにはどうすればいいのでしょうか?
0689nobodyさん2013/09/05(木) 06:25:29.21ID:???
>>687
この辺ですね
https://github.com/rails/rails/blob/4-0-stable/actionpack/lib/action_view/helpers/asset_url_helper.rb
binding.pryでconfig.*の値を確認していくと早いかもしれない

>>688
同じアクションで振り分ける場合
respond_to do |format|
format.html
format.json{ render json: @hoge.to_json }
end

静的ファイルとして書き出す場合
filename = "himitsu/#{@user.id}.json"
open(filename, "w").write(@hoge.to_json)
しておいて、書き出したファイルをどっかのアクションからsend_fileする
0690nobodyさん2013/09/05(木) 21:49:04.91ID:cRWHLmnX
>>689
binding.pryなんて便利な物あったんですね。
rails consoleでconfigの設定値は調べてたんですが、configの値は普通だったんで違うかと思ってましたが
helper内の挙動と合わせて見直してみます。ありがとうございます!
0691nobodyさん2013/09/05(木) 22:23:50.09ID:K2FtSIKW
Heroku
http://www.slideshare.net/shunjikonishi/heroku-15670119


おいしいherokuの使い方
http://www.slideshare.net/oakbow/ss-25912016
0692nobodyさん2013/09/05(木) 23:18:17.59ID:???
>>689
ありがとうございます。
外部にはくのは諦めます
0693nobodyさん2013/09/06(金) 20:10:30.51ID:???
http://kyamada.hatenablog.com/entry/2012/02/17/154846
これの通りにgemをカスタマイズして使っているのですが、
git add .
git commit
しても、カスタマイズしたgemがRailsのgitの中に含まれません。
gitの中に更にgitがあるのが問題なのだとは思いますがどうすれぱ、Railsのgitにカスタマイズしたgemを含められますか?
0694nobodyさん2013/09/06(金) 22:27:13.77ID:???
gitの中にあるgitを削除すれば良いのでは。
それかgitignoreでplugin/active_merchant/.gitを指定してみるとか。
0695nobodyさん2013/09/07(土) 12:55:54.56ID:???
ニコニコ動画やyoutubeのマイリスト的なものを作れるgemってありませんか?
0696nobodyさん2013/09/07(土) 14:16:02.17ID:8JSXs8IY
効率の良いIDを作ろうと思うと、youtube等の使っている方法が最も優れているのですかね?
何進数か分かりませんが、規則は一般に共通なのでしょうか?
激しくスレチですみません。
0697nobodyさん2013/09/07(土) 15:57:23.21ID:???
>>696
ハッシュ
0698nobodyさん2013/09/07(土) 16:02:39.58ID:maLq26j/
to_s(36) とかでいいじゃん、と思ったがアルファベットの大文字が混じらないので、
自力で62進(26+26+10)変換すればいいんじゃね?
0699nobodyさん2013/09/07(土) 17:14:17.18ID:???
https://www.ruby-toolbox.com/projects/uuidtools

universally unique identifier (UUID)
http://en.wikipedia.org/wiki/Universally_unique_identifier
0700nobodyさん2013/09/07(土) 18:12:09.01ID:maLq26j/
UUID ver4(Macアドレスとか時刻とかを使わない単なる乱数)でよければ
標準にも SecureRandom.uuid がある。
0701nobodyさん2013/09/07(土) 19:18:48.91ID:s024vk7c
singleton method SecureRandom.uuid
http://doc.ruby-lang.org/ja/2.0.0/method/SecureRandom/s/uuid.html

Module: SecureRandom (Ruby 1.9.3)
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/securerandom/rdoc/SecureRandom.html
0702nobodyさん2013/09/08(日) 03:43:36.65ID:9R3fglsn
この板はかなり親切な方が多いですね。
感謝しております。

今具現化してるアイディアがうまくいけば、皆さんのように優秀な方と仕事がしたいです。
いや、単なる妄想ですが・・・
0703nobodyさん2013/09/08(日) 11:25:39.46ID:???
Railsって共用レンタルサーバーで運用できますか?

今まではvps借りて一からセコセコとMySQLやRubyを入れてます

サーバーの引っ越しとかを考えたときにアプリフォルダだけを持っていくだけでお引っ越し完了!みたいなことは無理でしょうか?

普通の共用レンタルサーバーはSSHには対応してないですよね。
Railsの場合は rake db:migrateなどSSHを使わないといけない部分がありますが
どうなんでしょうか?
0704nobodyさん2013/09/08(日) 17:13:51.42ID:9R3fglsn
webrickを立ち上げたら、こういう感じで表示され、アクセスできません。
(winscpでファイル操作をするために、winscp接続にはパスワード無しでroot権限を与えたのが原因なのか)
ご教授願えませんでしょうか?


rails server

=> Booting WEBrick
=> Rails 4.0.0 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server

Exiting
/usr/local/rvm/gems/ruby-2.0.0-p247/gems/rack-1.5.2/lib/rack/server.rb:332:in `initialize': Permission denied - /home/USERNAME/APPLICATIONNAME/tmp/pids/server.pid (Errno::EACCES)
from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/rack-1.5.2/lib/rack/server.rb:332:in `open'
from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/rack-1.5.2/lib/rack/server.rb:332:in `write_pid'
from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/rack-1.5.2/lib/rack/server.rb:254:in `start'
from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/commands/server.rb:84:in `start'
from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/commands.rb:78:in `block in <top (required)>'
from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
0705nobodyさん2013/09/08(日) 17:53:11.19ID:???
>普通の共用レンタルサーバーはSSHには対応してないですよね。
んなことない
さくらなんかはかなり自由が効く
0706nobodyさん2013/09/08(日) 18:09:44.42ID:???
>>704
書いてるまんま
ファイルアクセス権限がないんでしょう
0707nobodyさん2013/09/08(日) 18:30:36.49ID:9R3fglsn
>>706
ありがとうございます。
先ほどのはroot権限なしでrails serverと入力したものでした。すみません。
root権限ありでrails serverと入力すると、下記のようなものが出てきます。
先のwinscpの設定をいじくる前は、webrickは表示できていたので、そこに絡んでミスをしたのかなと・・・
基本が分かっていないため、下記への対処法ですら自ら思いつくことができません。
宜しくお願い致します。


Mysql2::Error (Access denied for user 'root'@'localhost' (using password: NO)):
mysql2 (0.3.13) lib/mysql2/client.rb:58:in `connect'
mysql2 (0.3.13) lib/mysql2/client.rb:58:in `initialize'
0708nobodyさん2013/09/08(日) 19:19:35.11ID:lyU644NF
データベースのユーザー:パスワード設定確認
0709nobodyさん2013/09/08(日) 19:54:13.17ID:eymRfFPQ
productionモードにしたら全てのjsはコンパイルされて難読化されますが
erbに書いたjsはコンパイルされません。
ですのでここも難読化したいのですが・・・

皆さんならどうされますか?
0710nobodyさん2013/09/08(日) 20:50:10.77ID:???
全ての処理を1つのページで受けて
?type1=aaa&amp;type2=bbb
を
http://example.com/aaa/bbb
といった形で処理したいのですがRailsではどうすれば良いのでしょうか?
0711nobodyさん2013/09/08(日) 21:31:51.29ID:???
get ":type1/:type2/:type3", to: "controller#action"

もしくは
get "*types", to: "controller#action"
これでparams[:types]をアクションで処理する
0712nobodyさん2013/09/08(日) 21:45:13.76ID:9R3fglsn
>>708
database.ymlのpassword欄にパスワードを記入し解決したっぽいです。
まことにありがとうございました。
0713nobodyさん2013/09/08(日) 22:20:28.69ID:???
>>711
出来ました!ありがとうございました!
今日はぐっすり眠れそうです!うおおお
0714nobodyさん2013/09/08(日) 22:21:07.00ID:???
>>709
コントローラで適当にフィルタかける
0715nobodyさん2013/09/09(月) 00:51:38.92ID:???
productionモードにおいてのjavascript難読化って
せいぜい改行がなくなるとか
そんなもんですよね?
0716nobodyさん2013/09/09(月) 01:29:12.09ID:???
ファイル名にハッシュ値がつく
0717nobodyさん2013/09/09(月) 01:49:46.55ID:???
>>716
可読性とは関係なくない?

元のhtmlソース開いて
javaacriptのurl特定して
それ開けばいいだけだよね?
0718nobodyさん2013/09/09(月) 03:10:01.54ID:UOPspRhy
例えばユーザーの登録を行う時に、
国→主要行政単位(prefecture等)と選択させていく時、

どういう構成にするのが効率が良いのでしょうか?
ターゲットとなる国々の主要行政単位を別のテーブルに登録しておいて、ユーザーテーブルに関連付けるのが良いのでしょうか?
0719nobodyさん2013/09/09(月) 03:32:07.99ID:UOPspRhy
>>718
同じような質問がありました。
この対応で良さそうです。
http://stackoverflow.com/questions/14024281/how-can-i-show-only-the-prefecture-that-belongs-to-selected-country


ちなみに、オプションに表示される国名や県名などを多言語化する場合はどう扱ったらよいのでしょうか?
select_collection等の選択肢として用意している項目の多元化です。
国や行政単位に使うわけではないのですが。
0720nobodyさん2013/09/09(月) 04:27:18.98ID:UOPspRhy
>>719
http://d.hatena.ne.jp/akishin999/20120802/1343875095
バックエンドにデータベースを利用。
これは良いかもしれませんね。
これなら、YAMLをいちいち編集しなくても、もしかしたら協力ユーザーにデータベースを整理整頓してもらうこともできるかもしれない。

そろそろ会社で支障が出る時間帯だ。寝ます。
0721nobodyさん2013/09/09(月) 08:49:11.20ID:???
>>709
難読化じゃなくて軽量化を目的としてると思うけどこれで出来た
after_filter :uglify, only: :js_no_action
def uglify
response.body = Uglifier.compile(response.body)
end
0722nobodyさん2013/09/09(月) 10:12:46.63ID:???
誰か>>717についてコメントお願いします
0723nobodyさん2013/09/09(月) 10:18:09.95ID:???
>>719
その回答の中では解決してなさそうに見えますが
0724nobodyさん2013/09/09(月) 11:32:07.37ID:???
>>717の言うとおりで難読化とはまったく関係ないと思います。
フィンガープリンティングはキャッシュ対策。
0725nobodyさん2013/09/09(月) 15:51:51.69ID:???
Ruby on Railsやばすぎ
別サーバーに移転しようとして
環境deployしてたわけよ

passengerや使用gemのバージョンが1つでも少し違うだけで動かないwwww

gemどころかpassengerやrubyのバージョンまでとは。。。
1.92だと動いて1.93だと動かない!


依存関係がシビアすぎて鬱になる

一度構築した環境はもう二度と再建できないと思って取り組んだ方がいいね
0726nobodyさん2013/09/09(月) 17:37:58.07ID:???
404 Blog Not Found:そろそろPHPに関して一言いっとくか

PHPでいろいろやるためには、実際にはさまざまなライブラリーをあらかじめインストールした上で、
PHPをそれに合わせてconfigureしなおさなければならない。
こうして作られたlibphp#.soは、どれも微妙に、しかしユーザーにとっては耐え難く異なる。
http://b.hatena.ne.jp/entry/blog.livedoor.jp/dankogai/archives/50835571.html
0727nobodyさん2013/09/09(月) 19:58:42.11ID:UOPspRhy
>>723
本当ですね^^;

http://itmemojp.blogspot.jp/2012/10/rails.html
ajax + jquery というのが正解のようですね。。。
ここに紹介されているもので、�@都道府県がユーザー個々の登録情報(千葉県、埼玉県等)でデフォルト選択(市町村も該当のもの)できたりすると良いのと、
�A選択肢が多言語化できれば良いのですが(例えば、東京、tokyo。さらに欲を言えばヒラガナ等もヒモ付られれば)。


御回答くださりありがとうございました。
0728nobodyさん2013/09/09(月) 20:05:29.13ID:???
>>725
bundler使え
0729nobodyさん2013/09/09(月) 20:46:13.15ID:???
>>714
>>721
ありがとうございます。

ただし>>721だとコンパイル通りますか?
0730nobodyさん2013/09/09(月) 20:52:49.76ID:???
すいません、コンパイルは通りましたが、難読化されませんでした

after_filter :uglifyはいいとして、あとのオプションは only: :js_no_actionでいいのでしょうか?
0731nobodyさん2013/09/09(月) 21:02:34.36ID:???
>>727
usersテーブルにcountry_idやcity_idを追加したとして、
多言語化はここの(6)を参考に
http://morizyun.github.io/blog/i18n-english-rails-ruby-many-languages/
Country#name がlocaleに適切なカラム(name_jaやname_en)を返すようにする。

デフォルトの選択は
@countries = Country.all.map{ |country| [country.name, country.id] }
select_tag(:country, options_for_select(@countries, selected: @user.country.id))
こうなるんじゃないかな

options_for_selectに渡す@countriesのところはもっと綺麗に書けるかもしれない。
0732nobodyさん2013/09/09(月) 21:50:15.35ID:???
acts_as_commentable_with_thread などのgemには
誰が投稿したか?のuser_idのカラムが存在します

もしuser制を実装せずに誰でも投稿できるようにするにはどうすればいいのでしょうか?

まずモデルでuser(そもそも存在しない)とcommentsを関連づけないのか?

それともuserモデルはダミーで作り
2ユーザー(adminとguest)のみ作っておいて関連づけるのか?
0733nobodyさん2013/09/09(月) 21:50:47.16ID:???
>>730
productionと同じ動作のはずだよ。つまり難読化されない。
どうしても難読化したいなら、jsmin、yui-compressor、sqwish、closure、あとsassのやつとか
コンプレッサーのライブラリがあるみたいなんで、中には難読化してくれるものもあるかもしれない。

only: :js_no_actionのところは通常のHTMLにもUglifier.compileすると
エラーになるからjsを返すアクションに限定してフィルタをかけてという意味
もし同じアクションで複数のフォーマットを返すことがあるなら
response.content_typeでjs以外の場合はcompileをスキップさせて。
0734nobodyさん2013/09/09(月) 22:11:21.80ID:???
>>733
すいません、難読化の定義が曖昧だったようですが

・コメントが削除される
・空白やスペースが極力削除される
・変数名が一文字になる

というのを難読化と呼びました

productionで.jsをコンパイルしたら、確かに上の3つは実施されておりますが、
hoge.html.erbに書いたjsに対してそれを行いたかったのです。



application_controller.rbに、uglifyメソッドを定義して、
目的のhtml.erbをレンダリングするcontrollerにafter_filter :uglify, only: :js_no_actionを書きましたが、
erbに書いたjavascriptには変化はありませんでした


ちなみに、only: :js_no_actionって、rubyの文法的には、:js_no_actionはシンボルであり何かの引数だと思いますが
only:はなんなのでしょうか?
0735nobodyさん2013/09/09(月) 22:14:14.11ID:p6whV7Wi
Ruby 1.9から使える、シンボルをキーとしたハッシュリテラル記法
only: :js_no_action と :only => :js_no_action は等価。
0736nobodyさん2013/09/09(月) 22:46:44.36ID:???
ごめん。productionで変数は短縮されないと思いこんでたけど確認したら短縮されてた。

>>721では変数全部じゃなくてfunctionの中の変数だけ短縮されるみたいだ。
productionでも同じ動作かは確認してない。

https://github.com/lautis/uglifier
ここにuglifierのオプションが書いてあるんだけど
function外の変数を短縮する方法が見つけられなかった
0737nobodyさん2013/09/09(月) 23:24:23.12ID:???
>>735
ありがとうございます。

>>736
ありがとうございました。

今のところfunctionの中でも短縮化化されてないようです。
後出しですいませんが、今回やりたいのは、hoge.html.erbの中でrender :partialしているfuga.html.erbでした。
それだと、hoge_controllerにafter_filter書くだけではダメなのでしょうか・・・
0738nobodyさん2013/09/09(月) 23:57:44.96ID:???
>>709 のerbに書いたjsってfuga.js.erbじゃなくて、
fuga.html.erbにjavascriptが書いてあるってこと?
もしそうなら、俺の書いた事は見当違いかも・・・
0739nobodyさん2013/09/10(火) 00:52:16.17ID:PCxtq6wU
>>731
仮眠終了しました(笑)
今から取り組みます。

この板は親切過ぎて、甘えてしまっていますが、どうか宜しくお願い致します。
0740nobodyさん2013/09/10(火) 05:04:34.43ID:PCxtq6wU
>>731
明日は、先ほどの例で、都道府県を選択したら、
市町村のメニューそのものが表示されるようにしてみたいと思います(最初は表示されていない)。

ありがとうございました。
0741nobodyさん2013/09/10(火) 09:56:44.36ID:???
>>737
もし、HTMLの中にjsがベタ書きしてあるのなら、

ヘルパーに追加
def ugly_javascript(&code)
javascript_tag(Uglifier.compile(capture(&code)))
end

ビュー
<%= ugly_javascript do %>
function nanika(hoge){
alert(hoge);
var fuga = "fuga";
alert(fuga);
}
var dame = "dame")
nanika(dame);
<% end %>

これでこう出力された
<script>
//<![CDATA[
function nanika(a){alert(a);var n="fuga";alert(n)}var dame="dame";nanika(dame);
//]]>
</script>
0742nobodyさん2013/09/11(水) 08:20:27.07ID:???
>>738
>>741
ありがとうございました!
0743nobodyさん2013/09/11(水) 19:42:09.90ID:K4ZJ810j
>>727
のサイトさんの、
「 _todoufuken_select.html.erb 」は、

$("#jusho_shichoson_id").html (省略)・・・
<%= f.select(:shichoson_id, (省略)・・・

この2行で、この並びで問題ないのでしょうか?
(rails4では、find(:all)が使えないようなので、whereで対応しました。)
0744nobodyさん2013/09/11(水) 19:51:08.09ID:???
ざっとしか見てないけど
$("#jusho_shichoson_id").html... は
_todoufuken_select.html.erbじゃなくて、
todoufuken_select.html.erbの間違いだと思う。
つまり別ファイル。
0745nobodyさん2013/09/11(水) 20:10:37.43ID:7odvwZmt
スタートアップ企業で8年間Webの開発をしてみての反省点いろいろ - Masatomo Nakano Blog
独自フレームワークはやめよう
6. サーバ周りの人材をしっかり確保しよう
b.hatena.ne.jp/entry/blog.madoro.org/mn/84
0746あ2013/09/11(水) 20:14:42.56ID:7odvwZmt
あと先に書いたように、既存のフレームワークを利用しないので、「フレームワーク固有の知識」みたいなのが要求されなくて良いです。
ほら、結構重厚なフレームワークとか賢いフレームワークとかって、使いこなすためには一定の学習量が必要じゃないですか? そのコストがほぼ無い。
moznion.hatenadiary.com/entry/2013/09/11/163554
0747nobodyさん2013/09/11(水) 20:46:18.97ID:???
あー >>744 は忘れて。

$("#jusho_shichoson_id").html... は
todoufuken_select.js.erb に書くっぽい。
0748あ2013/09/11(水) 20:47:42.52ID:7odvwZmt
外の資源(ドキュメント/本/Google検索)が使えないので自前ですべて教育をしなくてはならない。
また、独自であるが故に、そのフレームワーク等の経験者を採用することもできない。
新しく入った人は常に0からのスタートになる。
blog.madoro.org/mn/84
0749nobodyさん2013/09/11(水) 22:10:13.17ID:K4ZJ810j
>>744 >>747
いつも?ありがとうございます。
jsファイルのことですね!!やってみます。

使えるようになるまであと数日かかりそうな悪寒はしますが、やってみます。
素人にとって、find(:all)の廃止から既に大きなトラップでした^^;
0750あ2013/09/12(木) 10:10:38.30ID:Jrvdbuq2
自分でサーバ立てるのってなんか楽しそうだしスゴそうだよね?
サーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ハードウェアの多重化なんて必要?
企業で使うとかじゃなく個人的に細々と立てたサーバが攻撃されることなんて滅多にないよね?
攻撃が来るって言ったって大した数じゃないんでしょ?
攻撃されたって大したことは起きないんでしょ?
b.hatena.ne.jp/entry/tmaeda.s45.xrea.com/20041101.html
 
0751nobodyさん2013/09/12(木) 19:58:34.11ID:???
sessionにデータが格納されていた場合に、
対応する入力フォームのテキストボックスにそのデータをセットしたいのですが、
どのように書けば良いか分かりませんでしたので質問させてください。

params[session_name] = session[session_name] unless session[session_name].blank?

上記の記述でいけるかなと思いましたが、これではparamsにデータが入るだけで
入力フォームにデータをセットすることはできませんでした。

初歩的な質問で申し訳ありませんが、ご教示の程よろしくお願い致します。
0752nobodyさん2013/09/12(木) 20:14:24.50ID:???
ビューはどうなってるんでしょうか?

以下は一例です。
@nanka.session_name = session[session_name]
form_for @nanka do |f|
 f.text_field :session_name
07537512013/09/12(木) 20:28:31.44ID:???
>>752
ありがとうございます。

ビューは、752さんが記述されているようにform_forで記述していたため、

 @nanka.session_name = session[session_name]

または、

 @nanka[session_name] = session[session_name]

にてセッションデータをフォームへセットすることができました。

迅速な回答をいただき、大変助かりました。ありがとうございましたm(_ _)m
0754nobodyさん2013/09/12(木) 23:47:48.38ID:LD1hnGrg
f.text_field :hoge :value => piyo

こんなんでもいいかもね。 動くかわかんないけど
0755nobodyさん2013/09/13(金) 00:00:55.33ID:G88nyhWW
>>727
実はこのサイトの作業をまだやっているのですが、色々エラーに悩まされています。
http://itmemojp.blogspot.jp/2012/10/rails.html

当方、Rails4を使っているのですが、下記のコードで何でエラーが出るのかよく分かりません。
助けてください。


<div class="field">

<%= f.label :country_code %><br />

<%= f.collection_select(:country_code, Country.where("name_ja not ?", nil), :id, :name_ja) %><br />

</div>


Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL)' at line 1: SELECT `countries`.* FROM `countries` WHERE (name_ja not NULL)
0756nobodyさん2013/09/13(金) 00:12:36.95ID:piGo/Q/6
エラーをはったら?
0757nobodyさん2013/09/13(金) 00:14:44.78ID:piGo/Q/6
ごめん。張ってあったね
is がないんじゃね?
f.collection_select(:country_code, Country.where("name_ja is not ?", nil), :id, :name_ja)
0758nobodyさん2013/09/13(金) 00:34:21.23ID:G88nyhWW
>>757
ありがとうございます。
このリファレンスサイト様の該当箇所を見ると、こう書かれていたのですが、rails4で変わってしまったのでしょうか??

http://railsdoc.com/references/where

>nilでないすべてのデータを取得
>Page.where("title not ?", nil)
># SELECT "pages".* FROM "pages" WHERE (title not NULL)
0759nobodyさん2013/09/13(金) 01:01:50.13ID:iGb+EzAg
そこ、Ruby上は文字列定数として書かれていて、Rubyサイドでは解釈されてない。
SQL文の文法エラーだから、Railsのバージョン(3か4か)は関係ない。
0760nobodyさん2013/09/13(金) 01:08:15.41ID:G88nyhWW
>>759
ありがとうございます。
<%= f.collection_select(:country_code, Country.where("name_ja not ?", nil), :id, :name_ja) %><br />

"name_ja not ?" を name_ja ? にすれば良いということでしょうか?
すみません、勉強不足です。
0761nobodyさん2013/09/13(金) 03:12:20.81ID:G88nyhWW
皆様のおかげでcollection_selectコンボが作動できました。
>>760については、『Couontry.where(name_ja IS NOT NULL)』としました。
Rails4では、書き方にやや変化もあるようです。
http://xxxcaqui.hatenablog.com/entry/2013/02/25/015146

?絡みは難しそうということが、なんとなく感じたので、今後勉強したいと思います。
親選択肢が選択されたら、それに沿った子選択肢のselect欄が"(非表示から)表示"されるようにするには、どういった感じでjQueryを使うのが良いのでしょうか??
明日はそこらへんを研究してみます。

ありがとうございました。
0762nobodyさん2013/09/13(金) 08:33:46.23ID:???
>>758
そのサイトときどき間違ってる事があるんだけど
連絡先が書いてないんだよねぇ
0763nobodyさん2013/09/13(金) 18:38:29.94ID:G88nyhWW
>>762
そうなんですね!!

ざっと復習する時に使うに留めます。
他のソースでも確認しながらにします。
0764nobodyさん2013/09/13(金) 21:25:55.10ID:iGb+EzAg
>>762

@railsdoc へ
0765nobodyさん2013/09/14(土) 00:25:59.15ID:UYW4D9ML
ルート/hoge/index (GET)
ルート/hoge/edit (POST)

というサイト構成で

ルートにアクセスしてきても、hoge/indexに誘導したいんですが、

root :to => "hoge#index"

としたら、今度はhoge.html.erbの<form>に書いたpost先の"edit"が、
ルートからアクセスしたらルート/editになってしまいます。

どうすればいいのでしょうか?
0766nobodyさん2013/09/14(土) 01:16:07.01ID:JzP2wFkZ
index.html.erbとedit.html.erbがあるのかな?
hoge.html.erbはroutesにどういう風アクセスするようにかいてるの?

form_forかform_tagかわからんけどソースはってみて

想像だけど
hoges_controller.rbがあって
def index; end
def edit; end
がそれぞれ定義されてるんだよね?
それぞれがレンダリングするviewは
def index: endがindex.html.erb
def edit: endがedit.html.erbだよね?
0767nobodyさん2013/09/14(土) 01:17:05.89ID:JzP2wFkZ
form周りのソースはってくれ
0768nobodyさん2013/09/14(土) 23:30:54.97ID:???
form_tag を使って文字列 edit を指定しているか <form action="edit"> としてると予想。
form_for を使うか、form_tag(action: "edit") とすると良いんじゃないかな。

それから、resourcesで定義されるeditはgetの編集フォームだから後で混乱しそう。
PATCH update、POST create を定義した方が良いと思います。
0769nobodyさん2013/09/14(土) 23:59:40.02ID:???
>>766-768
すいません、先ほどからソースを用意してherokuに挙げてここに貼ろうとしてましたが、
>>768の一言で解決しました。

<%= form_tag("edit", :class => 'hage') do %>

これを↓にしたら万事解決しました。

<%= form_tag({:action => :edit}, :class => 'hage') do %>

ありがとうございました。
次からはもっと説明がうまくできるように頑張ります。
0770nobodyさん2013/09/15(日) 12:32:59.28ID:0/0Pk/FF
fields_forで複数個のdate_select作ってます。
上から順に日付けを入れていくのですが、日付が新しい順から入っているかエラーチェックしたいです。
field_forの前後の値を取得する方法が分かりません。
ご存知のかた教えてくれませんか。
0771nobodyさん2013/09/15(日) 14:17:39.44ID:???
JSでやればいいんでは
というかJSでやるしかない
0772nobodyさん2013/09/15(日) 14:44:21.93ID:???
>>771
ありがとうございます。
方法がないと分かってスッキリしました。
JSでイきます。
0773nobodyさん2013/09/15(日) 23:25:55.38ID:tO4b1j0o
DBにメーカーというテーブルとシリーズというテーブルがあります。
各メーカーにシリーズは複数あります

class Maker < ActiveRecord::Base
has_many :series
attr_accessible :name, :uniqueness => true, :null => false
end

class Series < ActiveRecord::Base
belongs_to :maker
attr_accessible :name, :uniqueness => true, :null => false
attr_accessible :maker_id, :null => true
end


Viewでユーザーが特定のメーカーを選んで、そのメーカーの文字列が来ます(例:「キリン」「サントリー」)。
んで、DBから、そのメーカーと一致するシリーズを全て検索したいんですが
ActiveRecordでどう書くのでしょうか?

普通にSQL書けば

SELECT series.name
FROM series
INNER JOIN maker ON series.maker_id = maker.id
WHERE maker.name = @引数


なんですが、ActiveRecordだと Series.include(:maker)から先がよく分かりません
そもそも外部キーの設定が間違っているのかもしれませんが・・・
0774nobodyさん2013/09/16(月) 00:05:06.99ID:???
>>773
Maker.where(name: 'hoge').series
でいいんじゃないの?
0775nobodyさん2013/09/16(月) 00:23:05.70ID:???
1. Series.joins(:maker).where("makers.name = ?", params[:name])
2. Maker.find_by_name(params[:name]).series

1は>>773に書いてあるSQLと同様のSQLを1回発行、2はmakerのあとにseriesを検索の2回。
上の方のレスにもあるけど、mysqlでは1だとorder("series.created_at")というふうに
where句と異なるテーブルを指定すると有効な(?)indexを参照できずデータ量によっては遅くなるみたい。

それから、attr_accessible じゃなくて、validatesじゃないでしょうか。
0776nobodyさん2013/09/16(月) 14:41:32.48ID:W80yAF/O
Rails4を使っています。

entries = Entry.select('discount email').where(:user_type => 4)

のようにして、ある条件を満たすEntryの一覧を取得したいのですが、
emailカラムの重複を排除するためdiscountを使うと、entriesにはemail以外のカラムの値が入っていません。
emailの重複を排除した上で他のカラムのデータも取得するためにはどうすればいいでしょうか?
0777nobodyさん2013/09/16(月) 15:16:08.80ID:???
>>776
select に他のカラム名も書けばいいんじゃないの?
0778nobodyさん2013/09/16(月) 15:29:56.10ID:???
レコード数が1000万近くになる場合、MySQL+Railsだと どのような構成が考えられますか
0779nobodyさん2013/09/16(月) 15:52:28.18ID:???
>>776
こうかな
Entry.where(user_type: 4).group(:email)
0780nobodyさん2013/09/16(月) 16:02:11.10ID:dRVqKGC7
MySQLだと間違って通ってしまうSQLになるね。
0781nobodyさん2013/09/16(月) 16:07:20.75ID:???
>>774
ありがとうございます。
ただ、*** NoMethodError Exception: undefined method `series' for #<ActiveRecord::Relation:0x4c1f610>と出ました・・・

>>775
ありがとうございます。
Rails4では、find_by_○○○は廃止されるらしいので、1を選びます。

:validatesは使ったことないのですが、どこのカラムに使うのでしょうか?
mass_assignmentで更新させたいカラムには、attr_accessibleをつける程度の認識だったのですが
0782nobodyさん2013/09/16(月) 16:14:46.07ID:???
>>781
あぁ、そうか
Maker.where(name: 'hoge').first.series
じゃないとだめだな
0783nobodyさん2013/09/16(月) 16:31:13.21ID:???
>>780
>>779で発行されるこれはSQL的に間違いということでしょうか?
SELECT `entriess`.* FROM `entriess` WHERE (created_at < '2013-08-16 07:19:29') GROUP BY email
SQLite3でも通るのは確認しました。
0784nobodyさん2013/09/16(月) 17:05:27.47ID:dRVqKGC7
>>783

標準SQLでは、GROUP BYを指定したときSELECTに書けるのは、
GROUP BYで指定したカラムもしくは集約関数のみに制限される。

だって、グループ化した中のどの行のカラムが代表に出てくるのか予測出来ないじゃん。
0785nobodyさん2013/09/16(月) 17:28:45.21ID:???
なるほど。
納得できる説明ありがとうございました。
0786nobodyさん2013/09/16(月) 17:48:38.61ID:???
>>781
validates :name, :uniqueness => true, :presence => true
こんな感じで validates はDBへの入力を制限したいときに使います。
>>773 のコードだとattr_accesibleのハッシュの引数は無視されて、
nameが重複または空のmakerやseriesを作ることが出来ちゃうんじゃないかな。

4.0が対象だけど、目を通しておくと良いと思います。
http://yoshitetsu.rackbox.net/active_record_validations.html
0787nobodyさん2013/09/16(月) 18:14:55.05ID:???
>>778
検索に使う項目にインデックス貼っておけばクエリキャッシュを勝手にやってくれるし、1000万件なら普通に使えるんじゃない?
重たくなればmemcached使えばいいし、普通にアプリケーションとデータベースのサーバを分離するだけでいいかと
0788nobodyさん2013/09/16(月) 18:39:18.91ID:???
なんか言い方おかしいので訂正
クエリキャッシュはインデックスあってもなくてもやってくれる
インデックス貼って、クエリキャッシュもあれば…という意味です
0789nobodyさん2013/09/16(月) 22:02:17.55ID:???
Railsのスレッドモデルについて教えてください!
プログラミング自体独学なのでもしかしたらとんでもなく馬鹿なことを言ってるかもしれないですが指摘頂けたら嬉しいです。

たとえばUnicornを使った場合、
まずUnicornのワーカースレッドごとにRailsフレームワーク一式がメモリにロードされる。
Railsはマルチスレッドで動作するので、Unicornの各ワーカースレッドの中でRailsのスレッドが複数生成される。
一つのリクエストに対してはこのRailsのスレッドが対応する。
Railsのスレッドはリクエストが来るたびに対応するcontrollerクラスのインスタンスを生成し、処理してviewをレンダーして返す。

合ってますでしょうか?Railsのスレッドってあたりがかなり曖昧でよく分かりません。
0790nobodyさん2013/09/16(月) 23:34:10.50ID:???
>>782
ありがとうございます。
通りました


>>786
ありがとうございます。

class Maker < ActiveRecord::Base
has_many :series

attr_accessible :name
validates :name, :uniqueness => true, :presence => true
end

class Series < ActiveRecord::Base
belongs_to :maker

attr_accessible :name, :maker_id
validates :name, :uniqueness => true, :presence => true
validates :maker_id, :presence => true
end

としました
0791nobodyさん2013/09/17(火) 21:43:16.02ID:???
PHPをやりたいんですが、と相談したところ
一からPHPやるんやったら、Rubyをやり
と言われました
理由は?
0792nobodyさん2013/09/17(火) 21:51:05.08ID:???
PHPで変な癖つけてしまったらつぶしが効かなくなる
0793nobodyさん2013/09/17(火) 22:26:04.57ID:???
逆だろ
Railsから入ったプログラマとかマジで何も分かってない奴多すぎる
最近じゃRails案件しかできません、ってのもザラ
0794nobodyさん2013/09/17(火) 22:58:23.56ID:???
PHPしかできません、のレベルの低さを知らんと見える
0795nobodyさん2013/09/17(火) 23:07:24.25ID:???
最初の言語なんて何でも良いと思うけどね
0796nobodyさん2013/09/17(火) 23:16:48.65ID:???
>>789
railsはシングルスレッド
0797nobodyさん2013/09/17(火) 23:17:57.32ID:???
>>789

深く考えたことなかった
俺も知りたい
0798nobodyさん2013/09/18(水) 13:21:27.97ID:38KesYgn
グーグルがMySQLを切り捨ててMariaDBを採用 | ReadWrite Japan
http://readwrite.jp/archives/1018
0799nobodyさん2013/09/18(水) 14:17:04.51ID:38KesYgn
Red Hat Enterprise Linux 7でもMySQLに代えてMariaDBを採用 | スラッシュドット・ジャパン Linux
http://linux.slashdot.jp/story/13/06/16/0617201/Red-Hat-Enterprise-Linux-7でもMySQLに代えてMariaDBを採用

Fedora 19からはMySQLに代わりMariaDBを標準に採用「オラクルはMySQLプロジェクトをさらに閉鎖的にしている」。MariaDB Foundationもすでに設立
http://www.publickey1.jp/blog/13/fedora_19mysqlmariadbmysqlmariadb_foundation.html
0800nobodyさん2013/09/20(金) 23:47:57.34ID:/88Hvi/K
こんな風に並んでるテーブルをPOSTしたときのparamsを

<tr>
 <td>
  <input type="text" name="post[hoge]">
  <input type="text" name="post[fuga]">
  <input type="text" name="post[piyo]">
 </td>
</tr>
<tr>
 <td>
  <input type="text" name="post[hoge]">
  <input type="text" name="post[fuga]">
  <input type="text" name="post[piyo]">
 </td>
</tr>


post => [
      {:hoge=>"a", :fuga => "b", :piyo=>"c" },
      {:hoge=>"a", :fuga => "b", :piyo=>"c" },
      {:hoge=>"a", :fuga => "b", :piyo=>"c" },
      {:hoge=>"a", :fuga => "b", :piyo=>"c" }
]


こんな風に受け取りたいです。
テーブルを作るときにインデックスをその都度nameの中にいれて、name=post[1][hoge]とかいう風に作るしかないのでしょうか?
0801nobodyさん2013/09/21(土) 03:23:23.48ID:XEjHK3PQ
name="post[][hoge]" じゃなかったっけ?
0802nobodyさん2013/09/21(土) 14:52:12.97ID:mYeYwJTf
>>801
ありがとうございます。
ググってそれを見つけて試してみたんですが、なぜうまくいかないと勘違いしてしまったんでしょう。
できました。
0803nobodyさん2013/09/23(月) 00:05:34.74ID:???
fixturesでロードしたテストデータってテストを実行した後も残り続けるんですね。

全てのテスト実行後にfixturesでロードしたデータを削除するようなオプションってありますか?
0804nobodyさん2013/09/23(月) 00:06:59.80ID:???
803ですが、テストはRSpecを使っています。
0805nobodyさん2013/09/23(月) 05:12:57.84ID:???
俺はDatabaseCleanerにFactory_Girlを組み合わせて使ってる
fixtureでもたぶんいけるんじゃないかな
0806nobodyさん2013/09/23(月) 14:25:34.70ID:4mTz4dkO
Railsの4.0ってやめた方がいいのか?
0807nobodyさん2013/09/23(月) 15:03:31.07ID:???
セレクトボックスのOptionに
<option value="1">あ</option>
<option value="2">い</option>
<option value="3">う</option>

という感じにセットしたくて、
options_for_select([["あ", "1"], ["い", "2"], ["う", "3"]])
options_for_select({"1" => "あ", "2" => "い", "3" => "う" })

としたいんですが、

DBには
|id.| name |
| 1|   あ|
| 2|   い|
| 3|    う|

というデータが入っています。
idには抜けがあるかもしれません

ActiveRecordからoptions_for_selectの適切な書式に変換する簡単な方法はないのでしょうか
0808nobodyさん2013/09/23(月) 15:53:02.34ID:???
options_from_collection_for_select
0809nobodyさん2013/09/23(月) 15:54:03.03ID:MNsDJ8HM
options_from_collection_for_select(ar_collection, :id, :name)
0810nobodyさん2013/09/23(月) 15:56:35.70ID:MNsDJ8HM
なんで50分も経ってるのにかぶるんだよっ
0811nobodyさん2013/09/23(月) 16:36:05.82ID:???
>>808
>>809
どうもありがとうございます。

<%= select_tag :Test_id, options_from_collection_for_select(Test.all, :id, :name), {:include_blank => true }%>

で出来ました
0812nobodyさん2013/09/23(月) 21:12:55.51ID:???
>>806
マイナーでバージョンアップに対応してないgemに依存してるなどの状況がない限り、やめる理由がないかと
0813nobodyさん2013/09/24(火) 00:10:56.84ID:???
>>805
レスありがとうございます!DatabaseCleaner試してみます。
0814nobodyさん2013/09/24(火) 19:29:33.26ID:8nD8zdFn
通常のブラウザでアクセスすると正常にリダイレクトできているのに、機能テストにてリダイレクト先がnilだと言われエラーになり困っています。
1) Error:
test_should_destroy_b(BControllerTest):
ActionController::ActionControllerError: Cannot redirect to nil!
「A(1)」と「B(多)」二つのモデルがあります。内容はBのdestroyアクションを実行した時に、Bのindexではなく、Aのshowを呼びたいというものです。
(必要な部分を抜粋したのが下記です)

A.rb: has_many :B
B.rb: belongs_to :A
bs_controller.rb:
def destroy
@b = B.find(params[:id]); @a = @b.a; @b.destroy
respond_to do |format|
format.html { redirect_to @a } #ブラウザでは正常にAのshowアクションが呼び出されるが、機能テストではなぜか@aがnilになっている
format.json { head :no_content }
end
end
bs_controller_test.rb:
setup do
@b = bs(:one)
end
test "should destroy b" do
@a = @b.a; assert_difference('B.count', -1) do
delete :destroy, id: @b
end
assert_redirected_to @a #(あるいはassigns(:a)なのでしょうが、そもそもこの検証に辿り着く前にコントローラー側でエラーが出ます。)
end
end
bs.yml: one: a_id: 1
as.yml: one:{} #no column
0815nobodyさん2013/09/24(火) 22:34:01.92ID:???
似たような症状を経験したことがあるけどその時はテストのフィクスチャが正常にDBに保存されてないだけだった
08168142013/09/25(水) 01:21:39.88ID:qN1AVHHO
色々試して見たところ、機能テストでも直接のカラム(@b.a_id)は参照できているようなので、
下記のコードに書き直したところ、テストは通りました。
@b.a_idは取得できても、@b.aが参照できていないようです。
has_manyとか、belongs_toが効いてないんでしょうかね・・・


bs_controller.rb:
def destroy
@b = B.find(params[:id])
@a_id = @b.a_id # 機能テストでは@a_idには正常に1が入る
@a = @b.a # 機能テストでは@aがnilになる
@b.destroy
respond_to do |format|
# format.html { redirect_to @a } #ブラウザでは正常にAのshowアクションが呼び出されるが、機能テストではなぜか@aがnilになっている
format.html {redirect_to cart_path(@cart_id)}
format.json { head :no_content }
end
end

bs_controller_test.rb:
・・・
assert_redirected_to cart_path(assigns(:cart_id))
・・・
08178142013/09/25(水) 01:22:10.64ID:???
>>815
気になってテスト用DBを見に行きました。
フィクスチャで生成した行のidは1から順に振られていくものだと思っていたのですが、
ランダムな値がidに指定されているのですね!

sqlite3 db/test.sqlite3
sqlite> select * from A
...> ;
298486374|2013-09-24 15:57:25|2013-09-24 15:57:25
sqlite> select * from B
...> ;
298486374|1|2013-09-24 15:57:26|2013-09-24 15:57:26 # |1|がa_idの部分

それでテスト中でid=1のAを探しても見つからなかったということだったみたいです。
bs.yml: に
one:
a: one
としたところ、無事@b.aが参照されました!
developmentモードでcreateされるAはidが1~順に増えていくので、
テストfixtureでも同様だと思っていました。理由が分かってすっきりしました。
ありがとうございました。
0818nobodyさん2013/09/25(水) 01:28:16.08ID:???
railsの和訳がないのはrails関係の書籍が売れるから
ぼろ儲けするならrails関係の本を書け
0819nobodyさん2013/09/25(水) 04:11:14.24ID:???
書け書け
kindleで出版してくれ
0820nobodyさん2013/09/26(木) 07:53:53.72ID:???
CakePHPなら通常の共用レンタルサーバーに作ったプログラムを放り込むだけで動いちゃうわけだけど、

Railsとなると、VPS借りて鯖構築からしなきゃならんのよね?

セキュリティー対策面とか考えても辛すぎない?
0821nobodyさん2013/09/26(木) 07:56:28.75ID:???
つheroku
0822nobodyさん2013/09/26(木) 09:50:29.63ID:SmKIi4WZ
自分でサーバ立てるのってなんか楽しそうだしスゴそうだよね?
サーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ハードウェアの多重化なんて必要?
企業で使うとかじゃなく個人的に細々と立てたサーバが攻撃されることなんて滅多にないよね?
攻撃が来るって言ったって大した数じゃないんでしょ?
攻撃されたって大したことは起きないんでしょ?
http://b.hatena.ne.jp/entry/tmaeda.s45.xrea.com/20041101.html
0823nobodyさん2013/09/26(木) 09:58:07.19ID:???
攻撃されてサーバがのっとられたらたいした事が起きると思うが?
0824nobodyさん2013/09/26(木) 19:46:48.25ID:4SUn4QOR
developmentのときに、Viewなんかはリクエストのたびに毎回読み込みますけど
Controllerは毎回読み込むのでしょうか?
0825nobodyさん2013/09/26(木) 22:06:46.27ID:???
Railsサーバー構築は実際にやってみれば簡単だよ!
サーバー構築の経験が無い人にはとっつきにくく見えるかも知れないが大した事はやってない。
一度は自分でやってみた方がいい。
うちの会社でも新人の最初の課題でRailsでサービス作らせる。
awsのアカウントだけ教えて、あとはサーバー構築からアプリ作成、gitでのソース管理、デプロイ設定までを丸投げで一通りやらせる。
いい勉強になると思う。
0826nobodyさん2013/09/26(木) 22:26:51.29ID:SmKIi4WZ
HPを閲覧するだけで遠隔操作ウイルスに感染するサイバー攻撃は平成24年で1814件。
前年比約5.6倍と急増しているが、被害にあった企業は攻撃の数カ月後に気づくという無防備なケースは少なくない。
http://sankei.jp.msn.com/west/west_economy/news/130521/wec13052107010001-n2.htm
0827nobodyさん2013/09/26(木) 23:39:57.86ID:07vtBVXI
自分のPCのrubygemsと、Railsのgemは別物なのでしょうか?

というか、明らかに別物ですよね・・・

アプリ\vender\bundle\ruby\1.9.1\gems
C:\Ruby193\lib\ruby\gems\1.9.1\gems


Windowsなのですが、コマンドラインからgem installで入れるgemは自分のRubyフォルダのgemsが更新されて、
アプリのgemsは、bundle installで更新するという認識で宜しいでしょうか。
0828nobodyさん2013/09/27(金) 00:12:23.64ID:ABAcAb8Q
よくわからんのでbundleは常に--pathオプション付けて確実に独立させている。
08298272013/09/27(金) 00:18:17.07ID:GNhY4oM2
手動でコンパイルしたりしないと動かないgemがあって、ローカルにはそれができました。
bundle installで自動でコンパイルさせると、途中でエラーが出るので
手動でコンパイルしたものを使わせたいのですが・・・・

gemfileにはどう書けばいいのでしょうか。


gem 'gem-name', '0-0-0', :path => フォルダ名

これだとなんかダメな気が・・・
08308272013/09/27(金) 00:31:07.35ID:GNhY4oM2
できました
すいませんでした
0831nobodyさん2013/09/28(土) 15:03:08.33ID:nedYazf6
ブログの編集ページのURLがこんなふうになっていて記事の主キーがクエリ文字列になっています。

http://railsroot/blog/article/:id/edit

ここから記事を更新しようとして以下のアクションにpostするとき

Article_Controller#update

:idについては、HTML側の<form><input /></form>の中に値を書いて一緒に送信するしかないのでしょうか?
0832nobodyさん2013/09/28(土) 15:09:52.87ID:???
http://railsroot/blog/article/:id に PUT すりゃいい
0833nobodyさん2013/09/28(土) 17:31:53.81ID:N7y9oC8I
rake routes すれば分かる。
0834nobodyさん2013/09/28(土) 22:30:11.13ID:Wtn6Ig+R
>>832
ありがとうございます。
なるほど。そうするとparams[:id]が取れるわけですね。

>>833
ありがとうございます。
それは確認用に知っています。


ブログの記事作成と記事更新で、基本的にDRYのために、
なるたけ同じHTMLを再利用したいのですが・・・
Article_Controller#create → ブログ記事の新規作成 POST
Article_Controller#update → ブログ記事の更新 PUT
となっているとき、HTMLの仕様で<form>にはメソッドを一つしか書けないので困っています。

つまり、ブログ記事の新規作成と、ブログ記事の更新では、コントローラーのアクションの振り分け先が違うので、
新規作成と記事更新で、<form>のメソッドだけが異なるHTMLを2つ用意する必要が出てきてしまってるということです・・・


�@type=submitは使わずただのボタンにして、新規作成(POST)か更新(PUT)かはJSで送信先を切り替えて行う
�Atype=submitを使い、JSで<form>のmethodを新規作成(POST)か更新(PUT)かに切り替える
�B<form method=<% @method %>にして コントローラーで新規作成(POST)か更新(PUT)かをレンダリングする。
�C新規作成(POST)と更新(PUT)でHTMLを2つ用意するが、共通部分はpartialにする。

という選択肢を考えましたが、皆さんならどれにされますか?
0835nobodyさん2013/09/29(日) 10:09:04.14ID:???
>>834
scaffold で作ってみろ
んでそれを参考にすりゃ分かる
0836nobodyさん2013/09/29(日) 10:14:53.26ID:xQXyIa/G
form_for @obj を使っていれば新規レコードかどうかによって(@obj.new_record? の返値によって)
URL変わるよ。
0837nobodyさん2013/10/05(土) 18:14:10.04ID:BJITTvAL
Railsで構築中のアプリで、GoogleMapsAPIv3を使おうと色々実験中なのですが、
ひょっとするとRailsで使う場合は特別な配慮が必要なのですか?

今は、テンプレート「new」の画面に下記のようなコードを直接書いていて、いじくっている段階です。
昨日までは表示されていたのですが(下記のコードではありませんが)、今日は下記のコードで表示されなくなってしまいました。
いまいち、何を直せば良いのか分からないなので困っています。

下記のようなシンプルなコードでも表示されないということは、Railsで開発していること特有のものなのでしょうか?
ちなみに1IPからのアクセス数制限などは今は設けていません。




<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=MYAPIKEY&;amp;amp;sensor=false"></script>


<script>
var latlng = new google.maps.latLng(38, 135);
var options = {
zoom: 15,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map'), options);
</script>



<div id="map" style="width:300px; height:300px"></div>
0838nobodyさん2013/10/05(土) 18:31:40.97ID:???
完全にJavascriptの世界の話
Railsは無関係
0839nobodyさん2013/10/05(土) 18:39:04.06ID:BJITTvAL
>>838
そうなんですね!

ありがとうございます。
もう一度調べなおしてみます。
0840nobodyさん2013/10/05(土) 18:45:53.24ID:vnbnCFn1
>>837

>?key=MYAPIKEY&amp;amp;sensor=false

ここ実際にはどう書いてあるの?

?key=MYAPIKEY&amp;sensor=false の&がエスケープ(→&amp;)されて
?key=MYAPIKEY&amp;amp;sensor=false になってるの?

?key=MYAPIKEY&sensor=false の & をエスケープした
?key=MYAPIKEY&amp;sensor=false が入っているのが正しいような気がするんだが。
0841nobodyさん2013/10/05(土) 18:53:48.62ID:BJITTvAL
>>840
こう表示されていたとは!

私のnew.html.erbでは、エスケープされる前の「&」だけです。
先ほど、googleMapの方で質問させていただいていて、その後にrails特有のものなのかと思い、こちらで質問させていただいています。
googleMap板で貼ったコードをコピペして、こちらの質問で使ったので二度エスケープされていました。

すみません。
08428412013/10/05(土) 20:59:24.40ID:BJITTvAL
同じコードでも、railsのnew.html.erbに書き込んで表示しようとすると無理で、
単純にhtmlファイルを作ってブラウザに放り投げると表示されます。


もう少しググってみます。
0843nobodyさん2013/10/05(土) 21:08:29.89ID:???
Rails4ならpjaxが悪さしてるかもね
08448412013/10/05(土) 21:13:18.90ID:BJITTvAL
>>843
rails4です!

turbolinksとか、そこらへんでしょうか?
複雑そうなのでまだ放置しています^^;

rails4でmaps API使ってる人は、どういう使い方しているのか疑問もありますが、
まずは、pjaxも調べてみます!
ありがとうございます。
0845nobodyさん2013/10/05(土) 21:21:10.83ID:???
>>844
すまん、turbolinksだ
いっぺんそれ切ってやってみたら?
08468412013/10/05(土) 22:03:25.62ID:BJITTvAL
>>845
turbolinksの切り方から調べてやってみてご報告いたします!
(最終的にはturbolinksを捨てたくはないのですが)
08478412013/10/05(土) 22:25:04.48ID:BJITTvAL
turbolinksを一時オフにしてみましたが、特に変わりなく、
地図の領域だけ確保され、肝心の地図は表示されない状態です。

一昨日までは表示されてたんだけどな〜^^;
多少コードは違いますが。
08488412013/10/05(土) 23:12:50.97ID:BJITTvAL
表示されました!
ただ、色々なサイトからコードを借りてきては試しで、やっていたので、
何をミスしてたのかよく分かりません。

スレ汚しすみませんでした。

rails4でも、GoogleMapsAPIv3を普通に使えると思います。ということが分かりました。
では、また!!
0849nobodyさん2013/10/05(土) 23:19:09.67ID:???
モヤっと
08508412013/10/05(土) 23:25:48.19ID:BJITTvAL
何度もスレ汚しすみません。一つだけ分かったのでフィードバックさせていただきます。
非常に基礎的にところに絡んでいるとは思いますが、理解できていないので、『なぜか』を教えていただけると非常にありがたいです。

実験段階なので、「new.html.erb」内でやっているのですが、
地図を表示する場所<div>を下記のように<script>の上に書けば表示され、
下に書けば表示されないようです!
多分、シンプルなルールに抵触するかしないかの問題なのだと思いますが、一応フィードバックさせていただきました。


<div id="map" style="width:300px; height:300px"></div>

<script src="http://maps.googleapis.com/maps/api/js?key=MYAPIKEY &sensor=false"></script>
<script>
var latlng = new google.maps.LatLng(32, 135);
var options = {
zoom: 15,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map'), options);
</script>
08518412013/10/05(土) 23:33:59.20ID:BJITTvAL
ひょっとすると、
先ほどまでのvar latlng等のコードを、function initializeに格納して、
google.maps.event.addDomListener(window, "load", initialize);
で呼び出さないといけなかったのかもしれません。

色々な基礎サイトのコードを組み合わせて実験していたため、
GoogleMapsの本に書かれているこのルール?を適用していなかったことが失敗の原因のような気がします。
多分。

ということで、railsにも関係なかったし、初歩的な自爆っぽいです。
度々失礼いたしました。
協力してくださった皆様、ありがとうございます。
0852nobodyさん2013/10/05(土) 23:48:56.02ID:vnbnCFn1
ページから div#map を拾い出せる状態になる前にスクリプトがひととおり動作してしまうと
そうなりそうですな。
0853nobodyさん2013/10/05(土) 23:55:10.96ID:???
Railsは他の同様のフレームワークと比べて
どういった点でどれくらい生産性が高いのでしょうか?
0854nobodyさん2013/10/06(日) 23:41:44.54ID:???
jquery の $(document).ready() を使ってみるとはっきりするね
0855nobodyさん2013/10/06(日) 23:44:04.47ID:???
>>854
それって、$(function(){...})という省略形を使うのが普通だぞ。
0856nobodyさん2013/10/07(月) 00:42:06.17ID:???
>>853
ケース・バイ・ケースとしか言えない
自分がやる内容について候補となるフレームワークを自分で試して比較するしかない
0857あ2013/10/07(月) 02:34:03.26ID:???
require 'sinatra'

get '/hi' do
"Hello World!"
end
http://www.sinatrarb.com/
http://www.sinatrarb.com/intro-jp.html
0858nobodyさん2013/10/07(月) 08:02:01.88ID:???
行き詰まったので質問失礼させてください。

delayd_jobで非同期にメール送信をおこないたいと思っています。
以下のように書いて実行したところ
Use MyMailer.delay.mailer_action(args) to delay sending of emails.
というRuntimeErrorが発生してしまいメールを送信できません。

mail = OrderNotifier.received(@order)
mail.delay.send_mail

同じような状況になった方がおられましたらご助言いただけますと幸いです。
よろしくお願いいたします。
08598582013/10/07(月) 08:52:01.97ID:???
すみません。
send_mailは.deliverの間違いでした。

メソッドを書き換えて、試行したところ正常に動作しました。お騒がせしましたm(_ _)m
0860nobodyさん2013/10/07(月) 11:31:06.41ID:owNVQql5
すみません、質問させてください

Gemfileに記載があるにも関わらず、bundle installを実行しても一部gemがインストールされず、gem listで見てもinstallされていない状態でした

gem installを実行すれば普通に入ったのですが、bundle installで入らないのはなぜでしょうか?
0861nobodyさん2013/10/07(月) 15:51:48.26ID:???
どんなエラーが出た
0862nobodyさん2013/10/07(月) 19:42:42.05ID:DhmF4t2/
>>854
turbolinksで発動しないことがあるとかいう問題のことですかね?
0863nobodyさん2013/10/07(月) 19:49:54.55ID:nT1j+vKp
アプリケーションレイアウトのフッターでjqueryが読み込まれるプロジェクトがあって
いくら個々の画面のテンプレートで$()を使おうとも$がundefinedになってしまうんですが・・・

前任者がいないので質問できないんですが・・・

どうやってテンプレートでjQuery($)を参照すればいいんでしょうか・・・
0864nobodyさん2013/10/07(月) 20:14:50.83ID:nT1j+vKp
いや解決しました。
ヘッダーに移しますもう
知ったこっちゃない
0865nobodyさん2013/10/07(月) 21:35:56.35ID:6AfHzNSO
測ったことないけど、フッタで読むのは、headに入れるよりページが見えるのが速いという説に
よるらしい。気にするほどの差じゃないことのほうが多いと思う。

なんか他に末尾に置く理由あったっけ?
0866nobodyさん2013/10/07(月) 22:29:42.96ID:???
ヘッダにあるほうが一般的なんだから知ったこっちゃないなんて言わずに堂々と移せばいいのに
0867nobodyさん2013/10/07(月) 23:00:23.29ID:???
壊れてなくても修理する
リファクタリングだ&#8252;&#65038;
0868nobodyさん2013/10/09(水) 12:13:56.58ID:0vg+hv+c
ActiveRecordでwhereやselectを書いたあと、任意のタイミングでSQLを実行させるにはどうすればいいんでしょうか
size見てから処理したいのに、sizeを見た瞬間にCOUNT文が発行されてしまうんです

to_sqlにしてからsql実行すればいいですが、それだと戻り値がPG::Resultなんで、避けたいです
0869nobodyさん2013/10/09(水) 16:01:18.28ID:???
sizeじゃなくてlength使えば解決しました
0870nobodyさん2013/10/09(水) 20:18:56.04ID:???
Railsで相関サブクエリって出来る?
0871nobodyさん2013/10/10(木) 14:01:28.08ID:J/3rXCMC
SQL
0872nobodyさん2013/10/10(木) 22:35:41.39ID:bBHShRNI
SELECT * FROM (SELECT * FROM hoge) AS foo
WHERE sage = "sage"

というクエリを書くとして


class Sample < ActiveRecord::Base

 scope :age lambda {|sage|
  where (:sage => sage)
 }

 def self.search(subquery)
  find_by_sql("select * from (#{subquery} as foo"))
 end

end


class Sample_Controller < ApplicationController

 Sample.age("sage").search("select * from hoge")

end

としたらage()の部分が反映されませんでした。
どうすればいいのでしょうか
0873nobodyさん2013/10/11(金) 00:56:00.53ID:tMZSYaJJ
↑解決しました
0874nobodyさん2013/10/11(金) 12:38:44.44ID:???
Hoge.select(:id).from(Hoge.where(:id=>1))

Relationがありません とでます
0875nobodyさん2013/10/11(金) 17:37:28.01ID:???
Railsの高速化しようとしてDBのクエリを最適化してもViewのレンダーがボトルネックになるんですが
そういう場合の高速化はどのような方法が考えられますか?
0876nobodyさん2013/10/11(金) 17:56:30.86ID:???
>>870
普通にincludesとwhereでできたわ。
0877nobodyさん2013/10/11(金) 19:37:43.75ID:???
>>875
よほど特殊なシステムでない限りViewの部分がボトルネックになるってあんま考えにくい
Viewの内部で重いSQL発行する部分があるんでないの?
1つ1つのSQLは軽くてもN+1が発生してるとかね

マジモンのViewボトルネックなら、キャッシュ使えばいいと思うけど
Viewをキャッシュしなけりゃならんってことの原因はほぼDB
まずはDBの部分で問題がないかチェックしたほうがいい
下手にキャッシュ入れると問題にフタをすることになるし
0878あ2013/10/12(土) 05:54:58.40ID:Kkx+aXst
Railsで作ったサービスの速度改善方法について教えて下さい - QA@IT
http://qa.atmarkit.co.jp/q/2923
08794142013/10/13(日) 01:18:51.59ID:???
ActionMailer で質問です。

下記のControllerで

class MailerController < ApplicationController

def sendRegistEmail
retString = "success"

begin
Message.registEmail(params[:email]).deliver
rescue Exception => e
if e.message.include?("User unknown in virtual mailbox table") then
retString = "user_unknown_in_mailbox"
elsif e.message.include?("Name or service not known") then
retString = "name_or_service_not_known"
else
retString = "other_errors"
end
else
retString = "success"
end
end

respond_to do |format|
format.json { render :json => retString }
end
end

ってやってるんだけど、メールサーバーが別に立ててあるんです。
で、エラーを拾いたいんですが、可能でしょうか?
0880nobodyさん2013/10/13(日) 23:57:29.19ID:???
モデル名relationってまずいかな?予約語?
whereメソッドがまったく動作しないんだけど
0881nobodyさん2013/10/14(月) 00:05:03.62ID:K/zjsz+B
もしかすると Arel とかぶってるかも知れんな。
0882nobodyさん2013/10/14(月) 00:47:47.06ID:???
ごめん普通にrelationをdestroyしてもだめだった。予約後ではない??

@target=Response.find(9199)
@target=Response.where("id='9919'")

上を書くと普通にHTML表示できて下を書くとできない
たすけて〜
0883nobodyさん2013/10/14(月) 00:56:01.36ID:???
@target=Response.where(9919)
でイケるんじゃ
ダメなら
@target=Response.where(id: 9919)
0884nobodyさん2013/10/14(月) 00:59:41.34ID:???
Response.where("id='9919'").first とかいう問題ではない?
0885nobodyさん2013/10/14(月) 01:17:03.81ID:ONbSPu7l
>>884
それでした!ありがとう!!!





主キーであるはずのidが被ってたのか?
0886nobodyさん2013/10/14(月) 01:33:01.63ID:K/zjsz+B
>>885

結果が1個でもwhereで返ってくるのはrelationだよ
0887nobodyさん2013/10/14(月) 01:54:16.29ID:ONbSPu7l
>>886
ググってやっと理解できました。
whereを書いた時点ではSQLが実行されてなかったんですね。

しつれいしました
0888nobodyさん2013/10/14(月) 09:45:56.66ID:???
そういう問題じゃない
find(id)はレコードそのものが返ってくるが、whereの場合は(遅延評価の結果)配列が
返るのでfirstが必要ということ
0889nobodyさん2013/10/14(月) 11:19:48.67ID:g928WViv
create new build

delete destroy
0890nobodyさん2013/10/14(月) 20:22:20.04ID:???
accepts_nested_attributes_forを使ってネストしたフォームを実装して、
以下のように処理を書きたいのですが、行き詰まってしまったので質問させてください。

以下、コントローラーに記述したい処理のの概要です。
1. 関連するモデル(model_a, model_b)をbuildする
2. ネストしたフォームを利用して(model_a, model_b)に何らかの処理をおこない同時に保存する
3. 1でおこなったbuildを解除(表現がわかりませんが)する
4. 関連するモデルのうち、一方だけ(model_a)だけに何らかの処理をおこなう
5. 関連するモデルのうち、一方だけ(model_a)だけを保存する

上記の概要-3の、「3. 1でおこなったbuildを解除(表現がわかりませんが)する」ことはできるのでしょうか?

的はずれな質問をしてしまっているかもしれませんが、よろしくお願いいたします。
08918902013/10/15(火) 05:18:33.35ID:???
すみません。流してください。
0892nobodyさん2013/10/15(火) 19:56:24.58ID:hUiiEC+A
[ANN] Rails 3.2.15.rc3 has been released!
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/411331
0893nobodyさん2013/10/15(火) 20:48:05.43ID:hUiiEC+A
Amazon.co.jp: Remote: Office Not Required:
Jason Fried, David Heinemeier Hansson: 洋書
http://www.amazon.co.jp/gp/product/0804137501
0894あ2013/10/16(水) 06:53:25.24ID:lbEgPcdo
Re: [ANN] Rails 3.2.15.rc3 has been released!
Just an update, this rc seems fine, but I don't have my ducks in a row
for the release today. I'll push 3.2.15 tomorrow morning! :-)
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/411416
0895あ2013/10/16(水) 11:20:18.32ID:lbEgPcdo
インターネットはからっぽの洞窟
http://www.amazon.co.jp/gp/product/4794207433
0896あ2013/10/16(水) 11:21:46.35ID:lbEgPcdo
Ruby is a dying language.
Rubyは死にかけ言語です。
http://rubini.us/2013/10/15/introducing-rubinius-x/

翻訳
http://translate.google.co.jp/
0897nobodyさん2013/10/16(水) 11:36:37.37ID:lbEgPcdo
Ruby is a dying language (?) : programming
http://www.reddit.com/r/programming/comments/1oi8wd/ruby_is_a_dying_language/

Introducing Rubinius X | Hacker News
https://news.ycombinator.com/item?id=6553767
0898nobodyさん2013/10/16(水) 11:47:54.90ID:???
mixiのような会員制サイトを作りました。

会員がページ遷移する度に会員のログイン日時が更新されるようにしてます(秒単位)

仮に100人がログインしていたとして、それぞれがいろんなページを遷移したとしたら、かなりの勢いでデータベース(ログイン日時)の読み込みと書き込みが頻繁に行われます。

こういった構造は通常ではありえないでしょうか?

たった20〜30人ほどが閲覧してるだけのようなのですが、サイトが固まってしまいます。

タスクパフォーマンスを見るとApacheが沢山発生していて、それぞれがそこそこメモリを食ってるようです。

仕方なくアパッチを再起動すると直りますが…

それともサーバーのメモリが1GBだと少なすぎますか?
Rails3.2、Apache2、Passengerを使用しています。

Apacheに以下のようにPassengerの設定をしています

PassengerMaxPoolSize 30
PassengerPoolIdleTime 1200

何が原因になってフリーズしてしまうのか原因を特定したいのですが何かいい方法はありますでしょうか?
0899nobodyさん2013/10/16(水) 12:17:32.78ID:???
>>898
Passenger使ってないからメモリの問題はわからんけど
redisくらいの書き込み性能を持つデータベースなら毎回更新させても問題ない
ただログイン情報を持つようなテーブルを毎回更新させるとクエリキャッシュが全く効かなくなるから
更新日時は別のテーブルに分離したほうがいい
0900nobodyさん2013/10/16(水) 12:24:57.56ID:???
>>899
redisは使っておらずデータベースはMySQLです

更新日時のカラムはUserテーブルに設けています。
これは問題ですか?

関連テーブルにおいたほうがいい?
0901nobodyさん2013/10/16(水) 12:29:19.92ID:???
>>900
MySQLは更新が遅いからパフォーマンスへの影響が大きすぎる
状況によって異なるけどredisはオンメモリだからMySQLの100倍くらい高速

Userテーブルはログインチェック等で頻繁に読み込むのに毎回更新すると
MySQL側でキャッシュが毎回削除されて、パフォーマンスが落ちる
0902nobodyさん2013/10/16(水) 12:36:17.81ID:???
>>901
非常に参考になります
ありがとうございます

ログイン日時カラムは別テーブルに移した方がよさそうですね。


ページ遷移ごとにUserのログイン日時カラムを更新すると、たかだか20〜30人程度を捌くのも困難なのでしょうか?

Railsってそんなもんなのでしょうか?

私の見解ではRedisはmemcachedのようなものと把握しているんですが
ここからどういうふうにデータベースに反映させて、他のユーザーに最新の情報(他人の最新ログイン日時情報)を見せられるでしょうか?
0903nobodyさん2013/10/16(水) 12:40:02.74ID:???
>>902
タスクマネージャーでApacheが大量発生してるならPassengerの問題のように感じるけど
仮にアプリケーションが問題だとしたらRailsというよりもActiveRecordの問題だから
ARを経由せずに生のSQL書けば幾分解消される可能性がなくはないはず

RedisはRailsからActiveRecordのように使えるライブラリがあるから
ほとんどMySQLと差異なく使用できるはず
0904nobodyさん2013/10/16(水) 13:11:30.25ID:lbEgPcdo
一秒は1000ms

シーク時間はシーク範囲によって異なりますが、仮に 5ms とした場合、並列でI/Oを出せない IDE では 200 IOPS が限界となります。
http://pc.casey.jp/archives/153904156

http://e-words.jp/w/IOPS.html  

水道管の値段と水の流量を考える。
太い水道管を用いるとたくさんの水が流せるが、水道管の重量が増えるため水道管に必要な費用が大きくなる。
逆に水道管を細くすると重量の軽い水道管になるので水道管に必要な費用は少なくて済むが、少ない量の水しか流せなくなる。
このように、水量の多さを重視すると費用が犠牲になり、費用の安さを重視すると流せる水の量が犠牲になるという関係にあり、
流せる水量の多さと費用の安さはトレードオフの関係にある。
http://ja.wikipedia.org/wiki/トレードオフ
0905nobodyさん2013/10/16(水) 13:13:07.23ID:lbEgPcdo
ioDriveは10万IOPS、SSDも3.6万IOPSほどでした。
ハードディスクでは数百から千ぐらいのIOPS
http://internet.watch.impress.co.jp/docs/special/20120731_549042.html

まさに怪物! Fusion-ioが容量10テラバイト/性能130万IOPSのフラッシュドライブ「ioDrive Octal」発表 − Publickey
http://www.publickey1.jp/blog/11/_fusion-io10130iopsiodrive_octal.html

IOPSは、ディスクが1秒当たりに処理できるI/Oアクセスの数である。
IOPSが高ければ高いほど、高性能なディスクと言える。
http://itpro.nikkeibp.co.jp/article/lecture/20070104/258117/

Fusion-io、10億IOPSの新技術「Auto Commit Memory」発表。ストレージなんてレベルじゃない、パーシステントなメモリだ − Publickey
http://www.publickey1.jp/blog/12/fusion-io10iopsauto_commit_memory.html
0906nobodyさん2013/10/16(水) 14:19:26.71ID:???
>>902
Rails の問題というより、アプリケーション設計の問題のような…
0907nobodyさん2013/10/16(水) 14:37:01.72ID:lbEgPcdo
Fusion-ioのCEOに直接聞いた、フラッシュドライブの破壊的な能力と仕組み、そして将来 − Publickey

フラッシュストレージはサーバの能力を劇的に向上させます。
例えばニコニコ動画を運営するドワンゴでは、動画のキャッシングサーバの台数を4分の1にしました。
ミクシィは、数百台あったデータベースサーバを数十台近くまで、約10分の1に減らしました。
ドリコムではクエリ処理が20倍高速になり、サーバ台数が4分の1に削減されました。
そのほかにも多くのお客様がいますが、特にFacebookとAppleは大口顧客で、実に売り上げの半分以上を占めています。
http://www.publickey1.jp/blog/12/fusion-ioceo.html
0908nobodyさん2013/10/16(水) 14:45:31.24ID:lbEgPcdo
Fusion-io ioDrive の“非公式”標準価格/販売価格表
http://hesonogoma.com/hardware/fusion-io_iodrive_pricelist_2012.html
0909nobodyさん2013/10/16(水) 15:10:14.13ID:lbEgPcdo
さくらインターネットVPSのIOPSが
http://pc.casey.jp/archives/153904156
0910nobodyさん2013/10/16(水) 17:36:40.90ID:???
>>903
普通はApacheは1つしか発生しないものなんでしょうか?

Redisの導入って容易ですか?
Passengerみたいなものなんでしょうか?それともmemcached?
0911nobodyさん2013/10/16(水) 17:37:33.63ID:???
>>906
ログイン日時カラムをUserテーブルに追加しただけで
重くなってしまうものなんでしょうか?
0912nobodyさん2013/10/16(水) 17:38:47.19ID:???
>>910
> Redisの導入って容易ですか?
それぐらいやってみろよ…

> ログイン日時カラムをUserテーブルに追加しただけで
> 重くなってしまうものなんでしょうか?
自分で試して比較すりゃすぐに分かることをなぜ聞く…
0913nobodyさん2013/10/16(水) 18:16:18.91ID:???
>>912
すみません。試してみます。

ちなみにこれがさきほど話したメモリの使用状況です。
Apacheが大量発生しています。
なにがボトルネックになってこうなってしまうのか原因特定の方法さえ分かればいいのですが…

http://i.imgur.com/5epASMT.png
0914nobodyさん2013/10/16(水) 18:18:06.59ID:???
>>898
Suppose you have 1 GB of RAM and lots of blocking I/O, and you’re on a purely single-threaded multi-process deployment.
Conclusion: you should use 7 or 8 processes. Phusion Passenger should be configured as follows:
http://blog.phusion.nl/2013/03/12/tuning-phusion-passengers-concurrency-settings/
0915nobodyさん2013/10/16(水) 18:24:48.91ID:???
>>913
Passenger はプロセスを fork して Rails を preload する仕組みだから、当然の結果だ
0916nobodyさん2013/10/16(水) 20:59:21.36ID:G7j2gwai
皆様に漠然としてはいますが質問があります。
�@paperclipで、複数のサイズを用意すると思いますが、どういったサイズを用意するか。
(というか、各デバイスやシチュエーション向けに複数の画像を保存するという方法以外にはないのでしょうか?容量を食いそうでかなり気になります)

�Aたとえば、アマゾンの本のレーティングなどを自分のアプリに取り入れる時、ユーザーの信頼度や評価などから独自のアルゴリズムで点数を算出したいとしたら、
どういったシステムを構築するのが良いでしょうか?
ファイソンなのかRを取り入れるのか?RoRだけで事足りるのか。考え方を教えてください。


答えにくい質問かもしれませんが、先輩達のお考えを拝聴したいと思います。
宜しくお願い致します。
0917nobodyさん2013/10/16(水) 21:01:30.27ID:???
質問させてください

検索エンジンの結果で

○時間前
といったように最終更新(投稿)時間が表示されるようにするには
last modifiedを吐き出すように静的ファイルを生成するなど何か特殊なことをしないといけないのでしょうか?
0918nobodyさん2013/10/16(水) 21:23:05.33ID:???
time_ago_in_words
0919nobodyさん2013/10/16(水) 21:41:16.51ID:???
>>918
いえ、gem理由によるサイトでの表示ではなく
googleなど検索エンジンの検索結果画面で表示される ○時間前 といった表示の話です
0920nobodyさん2013/10/16(水) 22:02:05.15ID:???
>>919
解析班頼む
0921nobodyさん2013/10/16(水) 22:16:31.35ID:???
そりゃあんたの履歴だ
0922nobodyさん2013/10/16(水) 22:31:41.45ID:???
>>921
えっ?

検索結果に表示される
○分前とかってのは、その該当ページが更新された時間じゃないの???

時間を表示してページの情報の鮮度だと思うんだけど?
0923nobodyさん2013/10/17(木) 07:09:36.57ID:???
response.headers["Last-Modified"] = "Tue, 08 Oct 2013 11:22:20 GMT"
0924nobodyさん2013/10/17(木) 10:21:16.63ID:???
[ANN] Ruby on Rails 3.2.15 has been released!
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/411432

Riding Rails: [ANN] Rails 3.2.15 has been released!
http://weblog.rubyonrails.org/2013/10/16/Rails-3-2-15-has-been-released/
0925nobodyさん2013/10/17(木) 15:14:52.53ID:???
やりたいことはわかった
mixiみたいに最終ログイン日時を保存しておきたいってことだよね
本家mixiではkyoto tyrant使ってやってる。まあつまり、mysqlには頼ってないredisあたりいれるといい

20-30人程度がサイトアクセスするだけで重くなる
これはありえない。5w/s位すれば重くなるけどそこまでじゃないでしょ?
そもそも今はapache+passengerがオワコン
可能ならnginxとunicornを使うべし
ただ、原因はほかにありそうなんだよね。
assets precompileしてる?よくわからずliveにして毎アクセスごとに生成とかになってない?
0926nobodyさん2013/10/17(木) 15:17:17.59ID:???
同じサーバーにmysqlとappを同居させればそれは重くなる
rails側の処理負担のせいでmysqlが遅くなってよけいダメになるスパイラルになってない?
mysqlでは、slow_queryのログをとれるからググってどのクエリが遅いか調べるといいよ
0927nobodyさん2013/10/17(木) 16:37:21.90ID:???
DBとAppを同じサーバに置いたとしても30人程度でおちるかね?
0928nobodyさん2013/10/17(木) 16:50:51.31ID:???
落ちない
前にさくらVPSの一番しょぼい奴でRailsとMySQL動かして数万アクセス普通にさばいたし
0929nobodyさん2013/10/17(木) 17:49:43.82ID:???
>>898

PassengerMaxPoolSize 7
blog.phusion.nl/2013/03/12/tuning-phusion-passengers-concurrency-settings/
0930nobodyさん2013/10/17(木) 18:50:01.67ID:???
>>916
こう言うと語弊があるがここの人達には難しい質問なんじゃないかな?小規模サイト作っている人が大半のような気がするしそこまでスキルないから分からないんじゃない?
�Aに関しては必要がないので使っていないがおそらくcrontabというのを調べていけばやりたいことに近づくのでは?楽天やアマゾン食べログなどがレーティングの更新に使うとしたらこれじゃないか
�@に関してはよく分からない
0931nobodyさん2013/10/17(木) 19:08:59.09ID:???
>>916
cron自体もしかすると評価いまいちなのかもしれない
よく分からんから自分で調べてみるなりもう少し熟達者を待ってみて
0932nobodyさん2013/10/17(木) 19:14:26.91ID:???
>>916
おそらくcronを簡単に操れるwheneverというのが最適なんじゃないかと推測する
それがNOの場合は下記に誰かしらが否定すると思われ
まぁそこらを調べてみれ
0933nobodyさん2013/10/17(木) 19:29:05.27ID:???
>>916
cl_image_tag("face_top.jpg", :width =>100, :height => 100, :crop => :thumb, :gravity => :face)

d3jpl91pxevbkh.cloudfront.net/demo/image/upload/w_100,h_100,c_thumb,g_face/face_top.jpg
d3jpl91pxevbkh.cloudfront.net/demo/image/upload/w_0.3/face_top.jpg

devcenter.heroku.com/articles/cloudinary#using-with-ruby-on-rails
0934nobodyさん2013/10/17(木) 19:52:39.77ID:+6hB0tTJ
Generating a 150x100 version of the sample image and downloading it through a CDN:
res.cloudinary.com/demo/image/upload/c_fill,w_150,h_100/sample.png

cloudinary.com/documentation/cloudcontrol_integration
0935nobodyさん2013/10/17(木) 20:15:15.09ID:???
>>916
wheneverはキャッシュの定期削除なんかにも使えるらしいからここにいる人でも詳しい人多いかも
むしろ知らないのは俺でしたw
task管理に最適なものはここにいるエキスパートたちに聞きなはれ
0936nobodyさん2013/10/17(木) 20:54:12.65ID:R4NwrvMo
Cloudinaryのような機能は、paperclipではできないのでしょうか???
0937nobodyさん2013/10/17(木) 20:57:48.64ID:R4NwrvMo
あるいは似たような機能を有するものはありますか?
比較検討に値するもの
0938nobodyさん2013/10/17(木) 21:43:44.44ID:???
ImageMagick + Rmagicでサムネイル画像を作成する - プログラマ憧れプログラマ日記
nobyu.hatenadiary.jp/entry/20120311/1331473288
0939nobodyさん2013/10/17(木) 22:04:18.94ID:???
画像のサムネイルはもうぜんぶ動的生成にしてるわ
各サイズ用意する方が手間だし
0940nobodyさん2013/10/17(木) 23:07:25.50ID:R4NwrvMo
スマホ用だけ別枠で用意した方がいいんですかね?
フェースブックの写真一覧もイラッと来る遅さですよね。
Cloudinaryだとストレスを感じない位の速度なんでしょうか?

容量抑えるために皆様はどういった工夫をされていますか?
0941nobodyさん2013/10/18(金) 03:56:09.85ID:???
工夫はしない
アップロードファイルは容量を食うもんだと割り切る
以外となんとかなる
0942nobodyさん2013/10/18(金) 09:45:11.71ID:???
amazon S3なんて1G10円とかだろ
0943nobodyさん2013/10/18(金) 10:03:58.05ID:???
aws.amazon.com/jp/s3/pricing/
0944nobodyさん2013/10/18(金) 10:30:02.00ID:???
>>929
それで解決しました
ありがとう

メモリ1GBでMaxPoolSize20とか15に設定していましたが
そんな高い数値に設定できないもんですね
0945nobodyさん2013/10/18(金) 10:32:24.43ID:???
>>925
RailsだけでなくPHP(phpMyAdminやアクセス解析)なども使い
特定アドレスへのアクセスだけPassengerがOFFになるような設定をApacheでやっています

nginxでも同様なことが出来ますか?
同時アクセスに対してnginxはそんなに強いのでしょうか?
0946nobodyさん2013/10/18(金) 10:36:41.75ID:???
>>925
assets precompileはもちろんしています

しかし、それで生成されたハッシュ付きのjsファイルはキャッシュ化されているのでしょうか?

どうやらexpireの設定がされていないよに思えます


>>926
slow_queryなんてあったのですね
ありがとうございます


一つ皆さんに教えて欲しいんですが
稼働中の自分のサイトが突然なんかの拍子で重くなったら
どんな手順を追って原因を突き止めますか?

データベースの問題(重いクエリや瞬間的に同時にクエリが発生してるなど)

ApacheやPassengerなどサーバーエンジンの問題

Railsそのもののコーディングの問題

などなど
0947nobodyさん2013/10/18(金) 10:37:46.95ID:???
>>927
MaxPoolSize 5にしたら落ちなくなり快適になりました

15や20に設定していたときは、一時間もしないうちに落ちていました。

ちなみにメモリは1GBです
0948nobodyさん2013/10/18(金) 10:39:27.84ID:???
>>928
まさにそれです

さくらの一番安い980円のメモリ1GBプランです

MaxPoolSizeを20→5に変更すると
全く落ちなくなりました

これはSSDの2GBのプランとかに引っ越してMaxPoolSize 20とかにしたほうが
サクサク早くて快適になるのでしょうか?
0949nobodyさん2013/10/18(金) 10:57:43.74ID:???
質問させてください

ブログのコメントのように
コンテンツが次々と増えていくいくとします。
(例 平均して一日1000コメントくらいづつ増えるとします)

このコメントを1ページで50コメントづつDESC順(最新コメントが最初)で表示させていたとします。


すると一番古いコメントは
最初は URL?page=1ですが
5日もするとURL?page=100の位置に来ます

これってSEO的には問題でしょうか?

googleとしては最初にpage=1のURLと関連キーワードを記録していると思います。
しかし、凄い勢いでこの保存したキーワードとURLの組み合わせが変更されていきます。


pagenatorを使うときはDESCではなくASCを使うのが一般的なのでしょうか?

ただfacebookやtwitterのように新しいコメントがトップに来てる方が見やすかったりします。
0950nobodyさん2013/10/18(金) 12:13:42.85ID:???
被リンクの数や質が重要
0951nobodyさん2013/10/18(金) 12:25:23.28ID:???
相手にすんなよ
0952nobodyさん2013/10/18(金) 13:20:50.08ID:???
>>949
俺もこれ知りたい
0953nobodyさん2013/10/18(金) 17:18:12.27ID:???
>>949
よく気づいたね
それがCMSでのSEO攻略のミソの部分だよ
検索エンジンとしては特定URLのページ内容がしょっちゅう書き換わるようなURLは検索結果として信頼性(精度)が著しく落ちてしまう

いかにURLと記事内容を固定化させるかはCMSにおいての必勝法みたいなもん

欲を言えばhtmlで出力させるなどして静的化させたほうがよい
0954nobodyさん2013/10/18(金) 17:58:31.36ID:???
2chみたいなコメントが増える型でURL固定って無理じゃね
0955nobodyさん2013/10/18(金) 18:06:27.49ID:???
>>953
神様ありがとう
0956nobodyさん2013/10/18(金) 18:15:46.67ID:???
Rails 4からhas_one等に:selectのオプションを指定してカラムを絞ることが出来なくなったみたいですが、代わりの方法はあるのでしょうか?
0957nobodyさん2013/10/18(金) 18:25:22.77ID:???
>>956
ラムダ式で普通にできるっしょ
確か別のクエリ叩いたりRubyの式を書くこともできたはず
0958質問常連者 感謝感謝2013/10/18(金) 21:07:04.33ID:NnVzWy/v
http://kohada.2ch.net/test/read.cgi/php/1382097427/

いつもお世話になっているので、次スレ立てさせていただきました。
写真の管理にpaperclipではなくて、Cloudinaryとアマゾンを使うのが世の流れなのでしょうか?
(ちなみに私は、さくらVPS800GBを使ってスタートしようと思うのですが、写真1枚100KB、800万枚入る計算ですが)
0959nobodyさん2013/10/18(金) 21:15:22.65ID:???
carrirerwaveのほうが今は主流かな
0960nobodyさん2013/10/19(土) 05:11:57.92ID:???
>>954
無理じゃない
古いほうから順にページ番号をナンバリングしていけば完全に固定化される
0961nobodyさん2013/10/19(土) 06:36:06.82ID:???
誰かバリデーションのことで教えて!


Aというテーブルにa, b, c, dという4つのカラム(ポリモーフィック)があります。

このa, b, c, dが完全一致するレコードが重複してはいけない場合は

eというカラムを追加して保存時に
e=a+b+c+d
A.e=e
A.save
として

Aのモデル定義にて
eカラムをuniqunessのバリデーション設定してあげる必要がある?

それとも、いちいちeカラムとかを追加しないでスマートにバリデーションチェックをかける方法はありますか?
0962nobodyさん2013/10/19(土) 09:44:45.39ID:???
>>961
validates uniqueness scope でぐぐれ
0963nobodyさん2013/10/19(土) 13:04:54.18ID:hyytPm3D
railsでcancan的なシステムを自分で構築するには、どのサイトで勉強するのが良いでしょうか?
認証はdeviseではなく自前でやっているので、拡張性を考えて全部自前でやりたいなと思っているのです。
0964nobodyさん2013/10/19(土) 13:08:47.74ID:???
deviseはコントローラーやメソッドをドキュメント見てオーバーライドしたりすれば制約はほとんどないよ
trackableなんかも自作メソッドで別テーブルに保存したりできるし
0965nobodyさん2013/10/19(土) 13:17:33.46ID:hyytPm3D
>>964
追々deviseにするかもしれません。
ただ、今は構築中の初心者なので、仕組みを理解しながらやっていきたいなと思っているのです。
cancan的なことを自前でやっている人はあまりいないですかね?
一般ユーザーは登録編集までできて、管理ユーザーは削除までできるとか
0966nobodyさん2013/10/19(土) 13:29:03.29ID:uAnzwLAs
authorization とか authz とかのキーワードで探した実装を参考にするとよいのでは?
0967nobodyさん2013/10/19(土) 15:00:01.36ID:???
RailsによるアジャイルWebアプリケーション開発って本が参考になると思う
0968nobodyさん2013/10/19(土) 15:01:41.88ID:???
どうせRuby・Railsのバージョンが古くて
互換性がないというオチだろう?
0969nobodyさん2013/10/19(土) 15:56:03.97ID:Jr/4anBv
tests
GET /tests(.:format) tests#index
POST /tests(.:format) tests#create
new_test
GET /tests/new(.:format) tests#new
dit_test
GET /tests/:id/edit(.:format) tests#edit
test
GET /tests/:id(.:format) tests#show
PUT /tests/:id(.:format) tests#update
DELETE /tests/:id(.:format) tests#destroy

こういうルーティングがされているとき

@test = Test.new(params[:test])
format.html { redirect_to @test }


redirect_to @testはどうして「GET /tests/:id(.:format) tests#show」になるのでしょうか?

redirect_to @test.id ならわかりますが・・・
0970nobodyさん2013/10/19(土) 17:08:23.46ID:uAnzwLAs
>>969

redirect_to と url_for のリファレンス嫁
0971nobodyさん2013/10/19(土) 18:56:06.66ID:Jr/4anBv
>>970
読んだけど書いてません
0972nobodyさん2013/10/19(土) 19:25:17.68ID:???
redirect_to(options = {}, response_status = {})

Record - The URL will be generated by calling url_for with the options, which will reference a named URL for that record.


url_for(options = nil) Link

Relying on named routes

Passing a record (like an Active Record) instead of a hash as the options parameter will trigger the named route for that record. The lookup will happen on the name of the class. So passing a Workshop object will attempt to use the workshop_path route.

バッチリ書いてるね
0973あ2013/10/19(土) 20:04:10.64ID:???
代わりに、オプションパラメータとしてハッシュを記録(Active Recordのような)を渡すと、
そのレコードの名前付きルートの引き金となるでしょう。
ルックアップは、クラスの名前に起こります。
だから、ワークショップのオブジェクトを渡すとworkshop_pathルートを使用しようとします。
0974nobodyさん2013/10/19(土) 20:39:09.87ID:Jr/4anBv
>>972-973
http://api.rubyonrails.org/だったんですね
すいませんraisdocをあぼーんしたらそこも見えなくなって、見たけどありませんでしたと嘘つきました

ありがとうございました
0975nobodyさん2013/10/20(日) 06:04:59.30ID:???
現在、apacheで運用してて毎日6万PV回してるけどもう限界かもしれん

サーバーが日に2度3度落ちる

1GBさくらVPSだとこんなものかのぉ
0976nobodyさん2013/10/20(日) 06:27:52.20ID:???
それくらいならnginxにかえれば全然持つよ
0977nobodyさん2013/10/20(日) 06:35:16.08ID:???
nginxってそんなに優秀なの?
0978nobodyさん2013/10/20(日) 07:01:54.08ID:???
apacheはメモリ食い過ぎるから今の主流はnginx-unicornだよ
優秀ってほどじゃないけどそれくらいのPVならまだ戦えると思う
0979nobodyさん2013/10/20(日) 07:55:24.16ID:???
passenger は裕福なサーバ向けだからね
0980nobodyさん2013/10/20(日) 08:32:29.67ID:???
ちなみに、さくらの2GB SSDプランで nginx+unicorn なら
どのくらいまでの アクセス数/日 であれば戦えそう?

50万PVくらいかな?
0981nobodyさん2013/10/20(日) 12:40:51.60ID:???
ウェブサーバーごときで
そんなに差は出ない。

結局はアプリ次第。
0982nobodyさん2013/10/20(日) 13:18:52.25ID:fxS1kk8p
http://railscasts.com/episodes/250-authentication-from-scratch-revised?view=asciicast
http://cumiki.com/hacks/16

ここらへんを参考に認証機能をあえて自前で構築しているのですが、下記のようなエラーが出てしまいました。この対策(短期的長期的)を教えていただけたら幸いです。
私がやっていたのは、サインアップ、ログインアウトを実装し、その後にユーザーデータを全部destroyしました(なぜという訳ではないのですが)。
するとsession[:user_id]には"11"という数字が残ったまま、そのユーザーが見つからんということでエラーが出ているようです。
下記はアプリケーションコントローラーのコードで、レイアウトテンプレートに入れて共通表示しているものです。

私が知りたいのは、�@session[:user_id]をターミナルとかから消せないか、�A長期的に、ログアウトやユーザー削除がsession[:user_id]を掃除するにはどうすればよいのか。

とりあえず、共通表示のコードを取り払えば、このエラー表示からは逃げれそうですが、仕組みを解するためにも上記二点を知りたいと思っています。
宜しくお願い致します。

ActiveRecord::RecordNotFound in UsersController#new


Couldn't find User with id=11


Extracted source (around line #8):

private

def current_user

line8 @current_user ||= User.find(session[:user_id]) if session[:user_id]

end

helper_method :current_user
0983nobodyさん2013/10/20(日) 13:59:02.69ID:???
エラー内容とやりたいことがまったく噛み合っていないので答えようがない
0984nobodyさん2013/10/20(日) 13:59:25.30ID:fxS1kk8p
http://higelog.brassworks.jp/?p=343

よくpassengerの話が出ていますが、このサイトはナルホドと思いました。。。
0985nobodyさん2013/10/20(日) 14:05:23.79ID:fxS1kk8p
>>983
すみません。
素人過ぎて、噛みあっていないというところから理解できていませんでした。
session[:user_id]に残っていると思われる"11"というのを、削除したいのですが、短期的解決方法(�@)、長期的解決方法(�A)を探っている段階でございます。
もうすこし勉強してきます。
0986nobodyさん2013/10/20(日) 14:19:23.61ID:Hy7aQ34j
クッキー消せ
0987nobodyさん2013/10/20(日) 15:25:29.58ID:fxS1kk8p
>>986
ありがとうございます!
エラー表示されなくなりました!

こちら(クライアントサイド)のクッキーの問題なんですね^^;
0988nobodyさん2013/10/20(日) 15:33:13.39ID:???
>>981
静的ファイルの読み込み速度は全然違うよ
0989nobodyさん2013/10/20(日) 16:33:37.68ID:Hy7aQ34j
>>987

Railsのデフォルトではクッキーにセッション情報が入っている。
(改竄対策はされている。Rails4からは暗号化もされている)

サーバ側でセッション内のユーザーIDからユーザーオブジェクトを作ろうとして見つけられなかった
のがエラーの原因なので、対応としては、

クライアント
* もうサーバ側に存在しないユーザーIDをセッションを介して送るのをやめる。
= セッションクッキーを消す。

で当座は凌げるが、抜本的には

サーバで
* 存在しないユーザーIDと分かった(current_userメソッドで RecordNotFound が発生した)とき、
** ユーザーIDをセッションから消す
** セッションをまるごとリセットする
などの対応をする。
0990nobodyさん2013/10/20(日) 17:01:06.75ID:fxS1kk8p
>>989
完璧な御回答ありがとうございます。
current_userメソッドを改造すればいいわけですね・・・
ifとかで場合わけするのでしょうか・・・

ちょっと調べてみます。
ありがとうございました。
0991あ2013/10/20(日) 17:19:40.84ID:???
http://railsdoc.com/references/reset_session
0992nobodyさん2013/10/20(日) 17:51:15.94ID:???
yum install nginxだとバージョンが1.0.15になるんだけど
新しいバージョンの1.5.4とだとパフォーマンスは大きく変わるかな?

ちなみにRails3.2.11

あまり変わらないならyumのほうを入れようと思う
0993nobodyさん2013/10/20(日) 18:10:41.43ID:???
自分でサーバ立てるのってなんか楽しそうだしスゴそうだよね?
サーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ハードウェアの多重化なんて必要?
企業で使うとかじゃなく個人的に細々と立てたサーバが攻撃されることなんて滅多にないよね?
ADSL でつないでれば大丈夫だよね?
攻撃が来るって言ったって大した数じゃないんでしょ?
攻撃されたって大したことは起きないんでしょ?
http://b.hatena.ne.jp/entry/tmaeda.s45.xrea.com/20041101.html
0994nobodyさん2013/10/20(日) 18:13:37.91ID:???
Railsがクラッキングされている? - QA@IT
http://qa.atmarkit.co.jp/q/3190
0995nobodyさん2013/10/20(日) 18:15:07.14ID:???
ITmedia エンタープライズ:自社サーバがフィッシングサイトに「踏み台化」されたら? (1/3)
また、電源を切ってしまうことも良い対応ではない。
オンメモリ上で稼働しているフィッシングサイトの場合は、電源を切ることによって、すべてのデータが消えてしまい、原因究明や対応に遅れなどが出ることも考えられるからだ。
 事実、フィッシングサイトを構成するツールの中には、後に証拠が残らないよう、すべてがオンメモリ上で動作するものがある。
このような場合、再起動や電源オフによって、メモリ上にあるすべてのプログラムやファイルが消え、事実や原因の確認が困難になる。
http://www.itmedia.co.jp/enterprise/articles/0603/17/news004.html

New York Timesの記事によれば、同紙は米Symantecのウイルス対策製品を使っていたが、
Mandiantが調べた結果、攻撃者が使った45種類のカスタム版マルウェアのうち、Symantecの製品で検出できたのは1種類のみだったという。
http://bylines.news.yahoo.co.jp/yamamotoichiro/20130204-00023332/
0996nobodyさん2013/10/20(日) 19:07:43.41ID:???
ソニー7700万件情報流出、原因は「脆弱性への未対処」 : サイバー護身術 : セキュリティー : ネット&デジタル : YOMIURI ONLINE(読売新聞)
http://www.yomiuri.co.jp/net/security/goshinjyutsu/20110502-OYT8T00649.htm

ソニーPSNの個人情報漏洩に英国で約3500万円の罰金支払い命令、「防げた事件」と判定 - Engadget Japanese
http://japanese.engadget.com/2013/01/24/psn-3500/
0997nobodyさん2013/10/20(日) 20:40:14.09ID:fxS1kk8p
>>990
やべ、分かりません(笑)
ちょっとどなた様か、コードのヒントをくださいませ><
0998nobodyさん2013/10/20(日) 22:59:07.82ID:Hy7aQ34j
>>997

find(ID) は見つからなかったとき例外 ActiveRecord::RecordNotFound を投げるので、

方法1: rescue ActiveRecord::RecordNotFound で見つけられなかった場合の処理を書く(@current_user = nilとするなど)
方法2: find_by_id(ID) か where(id: ID).first にする (例外にならず、 nil を返す)

の2とおりの方法が考えられる。
0999nobodyさん2013/10/20(日) 23:30:25.22ID:aepowEVY
Rails4技術者認定シルバー試験

こんなのが秋から始まるのですね!?
ってことは、rails4対応の参考書とかも充実してくるのでしょうか・・・

今は海外の英語本を読まなければならずしんどいです。
TOEICはそこそこですが、そもそも未知の領域の学習なのでできれば母国語が良い。

ここにいる皆様ならもう必要ないかもしれませんが・・・
1000nobodyさん2013/10/20(日) 23:38:52.93ID:???
【RoR】Ruby on Rails Part17
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。