【RoR】Ruby on Rails Part17
■ このスレッドは過去ログ倉庫に格納されています
0001質問常連者 感謝感謝
2013/10/18(金) 20:57:07.83ID:NnVzWy/vhttp://kohada.2ch.net/test/read.cgi/php/1359587251/
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/10/20(日) 23:41:01.76ID:aepowEVY0003nobodyさん
2013/10/21(月) 16:26:17.72ID:/hLdo4QK毎回下記のコマンドを入力して、Railsを有効にしています。
$ cd /var/www/html/RailsApp
$ bundle exec rake sunspot:solr:start RAILS_ENV=production
$ unicorn_rails -c config/unicorn.rb -E production -D
これらをサーバー起動時に自動で実行させる方法はないものでしょうか?
そして、最初のcd /var/www/html/RailsApp は2行目、3行目のコマンドに差し込んで
省略できないものでしょうか?
0005nobodyさん
2013/10/21(月) 21:27:33.11ID:2KZNVKzsこれを見ながら、検索部分を実装しようとしているのですが、
よくある、左側が検索操作部分で、右側がその結果表示みたいなものを作ってみたいと思っています。
ここでいう、/app/views/searches/new.html.erbを左側に、
/app/views/products/index.html.erbを右側に、共存して配置するには、どういったコードにすれば良いのでしょうか?
0006nobodyさん
2013/10/21(月) 21:44:12.10ID:???0007nobodyさん
2013/10/21(月) 21:49:34.36ID:2KZNVKzs弊害がありそうですがそうでもないですか?
世の大手サイトはどういう仕組みでやっているのでしょうか?
0008nobodyさん
2013/10/21(月) 21:55:30.80ID:???文句つけるぐらいなんだから、自分の中で答えがあるんだろ
だったらその答えをまずひけらかしてから質問してみてはどうだい?
0009nobodyさん
2013/10/21(月) 21:57:47.90ID:2KZNVKzssearchs/new.html.erbとsearches/show.html.erbとの共存ですね
左で検索操作してポチっと検索して、右に検索結果一覧が出てくる的な。
検索結果一覧が出た後も、検索操作部分は変わらずある
0010nobodyさん
2013/10/21(月) 21:59:08.27ID:2KZNVKzs文句はないっす^^;
すみません。。。
大手のサイトでよくある検索ページは、iframeじゃないんだろうな、って思って、
一体どうやってんのかなと思った次第です。
失礼しました。
0012nobodyさん
2013/10/21(月) 22:19:49.08ID:gSn2nVWt0013nobodyさん
2013/10/21(月) 22:32:09.85ID:2KZNVKzsありがとうございます!!
それが正解っぽいですね!
下記あたりを読んでいます。
//shirusu-ni-tarazu.hatenablog.jp/entry/2012/03/21/011450
0014あ
2013/10/21(月) 22:50:29.24ID:???http://b.hatena.ne.jp/entry/d.hatena.ne.jp/yuum3/20120903/1346653974
0015nobodyさん
2013/10/21(月) 22:52:07.54ID:/hLdo4QKコントローラーや、ビューの内容を修正後、
Apacheであれば
/etc/init.d/httpd restart
0016nobodyさん
2013/10/21(月) 22:52:15.23ID:2KZNVKzsただ、railscastのAdvanced Search Formというのでは、検索のためにモデルコントローラーを作って、
newとかshowとかが出てきます。
ここでいうnewやshowは混在させることが可能なのでしょうか???
0017nobodyさん
2013/10/21(月) 22:54:42.57ID:2KZNVKzsあ様、いつもありがとうございますm(_ _)m
ここで紹介されているものは、>>16の場合でもいけるものなのでしょうか??
0018nobodyさん
2013/10/21(月) 22:55:49.59ID:/hLdo4QKコントローラーや、ビューの内容を修正後、
Apacheであれば
/etc/init.d/httpd restart
0019nobodyさん
2013/10/21(月) 22:56:26.55ID:/hLdo4QKコントローラーや、ビューの内容を修正後、
Apacheであれば /etc/init.d/httpd restart
0020nobodyさん
2013/10/21(月) 22:56:58.71ID:/hLdo4QK変更を適用するにはどうすればいいでしょうか?
0021nobodyさん
2013/10/21(月) 22:57:51.19ID:/hLdo4QK8行くらいで送信したのに5行までしか投稿できませんでした
0022nobodyさん
2013/10/21(月) 22:58:16.83ID:???</table>
をパーシャルにして
<tr>
<td>
</td>
</tr>
をパーシャルのパーシャルにする
って普通にできますよね?
やらないとしたら理由はなにかありますか
0023nobodyさん
2013/10/21(月) 22:59:32.69ID:???そもそもdebian系のディストリビューションなんだろうか
だとしたら普通にそれで反映されるはずだが、本来変更するにはreloadコマンド
それ以上はスレチだ
0024nobodyさん
2013/10/21(月) 23:01:14.81ID:/hLdo4QKCentOS6.4上で yum install nginxで入れました
0025nobodyさん
2013/10/21(月) 23:03:53.53ID:/hLdo4QKApacheとは違って、もしかしてunicornも立ち上げ直さないといけないとかですか?
0028nobodyさん
2013/10/21(月) 23:12:54.29ID:/hLdo4QKreload も試しましたが反応なしです。
0031nobodyさん
2013/10/21(月) 23:24:09.22ID:/hLdo4QKそうでしたか
ありがとうございます。調べてみます
0032nobodyさん
2013/10/21(月) 23:30:23.03ID:???ありがとうございます。
すると、trをcollectionにしてループにするのはあまりやらないのでしょうか
0034nobodyさん
2013/10/21(月) 23:56:49.26ID:2KZNVKzsまことにありがとうございます!!
0036nobodyさん
2013/10/22(火) 02:53:22.93ID:wfN4D7SEサーバーの移動をしました。
その際にRailsアプリのフォルダをまるまるコピーして持っていき、
その後、sqlデータをエクスポート→新サーバーへインポートしました。
するとなぜか、paperclipという画像アップロード専用gemであげた画像の格納パスとデータベースに保存されているパスが一致しなくなっており
一部画像が表示されなくなりました。
これを解決する方法をご存知の方はいらっしゃいませんか?
0037nobodyさん
2013/10/22(火) 03:09:37.19ID:HOsNddR80038nobodyさん
2013/10/22(火) 05:31:12.87ID:???参考情報の量以外で
0039nobodyさん
2013/10/22(火) 07:28:02.56ID:???0040nobodyさん
2013/10/22(火) 16:44:24.87ID:HOsNddR8http://toro.2ch.net/test/read.cgi/hosting/1329378677/l50
0041nobodyさん
2013/10/22(火) 17:09:43.61ID:???rails generate controller home index about contact
でHomeControllerとindex,about,contactの3つのアクションができました
このうちaboutだけ不要なので
rails destroy controller home about
ってやったんですが、indexもcontactも含めてHomeControllerに関係するファイルは全て消えてしまいました
こういう場合はどうやるのでしょうか?
0042nobodyさん
2013/10/22(火) 18:50:52.94ID:???0043nobodyさん
2013/10/22(火) 19:02:49.51ID:l6eIb4nfhttp://hayabusa3.2ch.net/test/read.cgi/news/1382432343/
0044nobodyさん
2013/10/22(火) 19:25:58.63ID:???またcapybaraを使ってフォームに値を入れるwithinが使えないのですが
そのようなテストはコントローラーテストでは使わないということですか?
0046nobodyさん
2013/10/22(火) 21:29:01.98ID:z3Clu8jQ個別には消せない
ルーティング規則からaboutを削除すればアクションは呼べなくなる
あと
* コントローラのソースからaboutメソッドを削除
* ビューファイルも消す
ですっきり
0047nobodyさん
2013/10/22(火) 22:47:55.64ID:???0048nobodyさん
2013/10/22(火) 22:49:49.61ID:???http://www.ustream.tv/recorded/40070580
http://www.ustream.tv/recorded/40071025
0049nobodyさん
2013/10/22(火) 23:24:25.72ID:???オープンソースなのに誰がそれを負担してるの?寄付とか?
0050nobodyさん
2013/10/23(水) 04:54:09.83ID:Ry1rC3Pkこのページの下記の部分って、rails4にするにあたって、変更しなければならないのですか?
ArgumentError in Searches#show
'nil' is not an ActiveModel-compatible object. It must implement :to_partial_path.
と出てしまうのですが
<h1>Search Results</h1>
<%= render @search.products %>
0051nobodyさん
2013/10/23(水) 05:07:52.27ID:Ry1rC3Pkこれはモデルのメソッドを呼び出しているのでしょうか?
何をしているのか、そもそもよくわかっていません
0052nobodyさん
2013/10/23(水) 06:34:25.77ID:???一つのファイルを保存するだけで済む方法はないのでしょうか?
複数アプリケーションや複数場面でサイズを変えたいものの、サイズ種類ごとに保存していくと容量を食い過ぎるため。
また、仮に一つのファイルを保存するだけで済んだ場合、呼び出しの度にリサイズ処理に時間がかかったり、弊害はないのでしょうか?
0054nobodyさん
2013/10/23(水) 17:06:45.47ID:???0055nobodyさん
2013/10/23(水) 19:13:09.34ID:???8000万個のオブジェクトをAmazon S3に保存、総容量は410テラバイト
http://www.publickey1.jp/blog/12/pinterest_pythonamazon.html
0056nobodyさん
2013/10/23(水) 19:15:01.70ID:???0057nobodyさん
2013/10/23(水) 21:36:54.67ID:???>>54
ちょっと自惚れがすぎますが、一年程度で1TB、二年程度数TBを想定しています。
徐々にマネタイズしろよ、って話ですが、S3は若干お金の心配があります。
少なくともcloudinary?のように一回の保存だけで対応できる方法を、paperclipやcarrierwaveでとれないかと興味を持っている段階でございます
0058nobodyさん
2013/10/23(水) 21:41:38.92ID:???>>56
なるほど!!!
ただ、私がコスト比較しているのは、とりあえず1TBくらいまでのみちのりです。
そこまで成長しないリスクも想定しつつ。
そのあとは、、、
どこくらいまでが、自前でそろえるよりも有利なんでしょうね。
検討しなくては
0059nobodyさん
2013/10/24(木) 07:40:54.45ID:???そのときになってから対処すればいい
DHHも言ってる
今やらなければいけないことは、「必要になるかもしれない」ことではない、と
0060nobodyさん
2013/10/24(木) 14:36:06.61ID:???hoge.id_sum #=> idの合計値
みたいな感じで値が取れますが、別名を付けた「id_sum」って具体的にhogeのどこに格納された値なのでしょうか?
0061nobodyさん
2013/10/24(木) 14:50:22.85ID:???0062nobodyさん
2013/10/24(木) 19:29:42.96ID:???当該hogeインスタンスに動的にid_sumアクセサが定義されてる
特異メソッドだから、他のhogeインスタンスには無いアクセサなので別の場所や他のhogeインスタンスで呼ぼうとするとエラーになる
Rubyの便利な機能だけど、怖くもある
もしHogeクラスに何か重要なid_sumメソッドやid_sumアクセサが元から定義されてた場合、>>60のコードで上書きされてしまって
意図せぬ問題が発生する可能性がある
この手のRubyの意図せぬメソッドやアクセサの上書きってみんなどうやって対処してるのか興味がある
0063nobodyさん
2013/10/24(木) 19:42:34.57ID:???0064nobodyさん
2013/10/24(木) 20:45:41.72ID:sTGrSraH名前を付けない場合は [] でアクセスできるよ。
0065nobodyさん
2013/10/24(木) 21:30:22.04ID:???なるほど、アクセサを定義している箇所を見れば分かりそうですね。
>>64
[]の引数は何になるのでしょうか?
hoge[:id], hoge["id"], hoge["SUM(id)"]など試してみたけど取れませんでした。
0066nobodyさん
2013/10/24(木) 22:03:20.19ID:???コントローラーにて【@parent.child = child_instance】のような記述で、
関連する親子モデルを割り当てる際に、
saveが走っているようでバリデーションチェックが入ります。
関連する親子モデルを(新規に作成するのではなく)割り当てる際、
バリデーションチェックをスキップする方法などありますでしょうか?
よろしくお願いいたします。
0067nobodyさん
2013/10/24(木) 22:53:01.78ID:???よーく確認しましょう
0068nobodyさん
2013/10/25(金) 00:03:22.04ID:HgfeljUn最後の SUM(id) で出来るはずなんだがなぁ
とりあえず、どんなキーが使えるか、
attribute_names にも入ってない?
0070nobodyさん
2013/10/25(金) 19:57:28.56ID:???0071nobodyさん
2013/10/25(金) 21:55:26.88ID:???OmniAuthを使うとFacebookやTwitterアカウントでログインが出来るという認識です。
こちら側で用意した特定Twitterアカウントからのみ
ツイートを実施したい場合でもOmniAuthは利用できますか?
いちいち各ユーザーがTwitter認証をすることなく、
なんらかのアクションを起こすと、
こちらで用意したTwitterアカウントで投稿が行われる仕組みです。
0074nobodyさん
2013/10/26(土) 03:41:36.42ID:???params[:keyword] = "TEST"
@posts = Post.where('title like ?', params[:keyword])
みたいなことをするのを前提としたとき
titleカラムはindexを貼っておいたほうがいいですか?
0075nobodyさん
2013/10/26(土) 04:44:43.19ID:???でもMySQLではワイルドカードから始まるlikeは
indexが使用されないとかあるらしい。
0076nobodyさん
2013/10/26(土) 12:29:06.40ID:Yys5qMugこれに従って、アドバンスドサーチなるものを作っています。
これにAJAXを付け加えて、検索結果を検索条件入力フォーム欄の下に表示する形態をとりたいのですが、全く辿り着けません。
newアクションから、createアクションを経由し、次にshowアクションにリダイレクトされる流れなのですが。
難しい内容なのかもしれませんが、もし分かる方がいらっしゃいましたら、教えていただけるとありがたいです。
0077nobodyさん
2013/10/26(土) 12:33:37.00ID:Yys5qMugもうすこしjquery/ajaxを使ったスマートな方法が欲しいのです。。。
0078nobodyさん
2013/10/26(土) 12:33:54.38ID:???逆に理解できてなくて答えだけ欲しいというのならスレ違い
0079nobodyさん
2013/10/26(土) 12:58:02.37ID:???きちっと分かってたらこんなところにこねぇだろw
ここは>>77や>>78のように分かってない奴が来るところ
0081nobodyさん
2013/10/26(土) 13:29:54.75ID:Yys5qMug普通のform tagの検索なら簡単にjqueryで動的ページを作れますが、
ここで紹介されているのは複雑な検索用に検索モデルを作って・・・・という流れなのです。
0083nobodyさん
2013/10/26(土) 13:35:17.60ID:Yys5qMug読んでいただければ分かりますが、永続化します。
wheneverなどで、ゴミ掃除はあとでするという考えです。
getだと検索項目が限られるため、モデル化してしまうのが良いというのがrailscastで紹介されているadvanced-seachのやり方です。
なので、動的表示にするのも、もう一歩進んだ知識を持たれた方のアドバイスが必要なわけです。
0085nobodyさん
2013/10/26(土) 13:53:53.61ID:Yys5qMugshow.html.erbで表示される仕組みになっているのですが・・・・
def new
@search = Search.new
end
def create
@search = Search.create!(search_params)
redirect_to @search
end
def show
@search = Search.find(params[:id])
end
0087nobodyさん
2013/10/26(土) 13:58:01.32ID:Q8szoofsredirectするんじゃなくて、結果をJSONやHTML片で返すとか。
0088nobodyさん
2013/10/26(土) 14:05:52.87ID:Yys5qMugそして、そこで呼び出されている?searchモデルが下記になります。
おそらくshow.html.erbの上記記述で下記が呼び出されていて?、それで実際検索が行われる仕組みなんじゃないかと・・・・
def products
@products ||= find_products
end
private
def find_products
products = Product.order(:name)
products = products.where("name like ?", "%#{keywords}%") if keywords.present?
//以下複数の検索項目を設定
products
end
0089nobodyさん
2013/10/26(土) 14:29:11.47ID:???キモはそのrenderの部分
ActionView::Helpers::RenderingHelper#renderを読むと
render(options = {}, locals = {}, &block)
(snip)
・:partial - See ActionView::PartialRenderer.
(snip)
If no options hash is passed or :update specified, the default is to render a partial and use the second parameter as the locals hash.
と書いてある。ということで、ActionView::PartialRenderを見れば、
Rendering objects that respond to `to_partial_path`
# @posts is an array of Post instances, so every post record returns 'posts/post' on `to_partial_path`,
# that's why we can replace:
# <%= render partial: "posts/post", collection: @posts %>
<%= render partial: @posts %>
と今回の例の場合が載っている
0090nobodyさん
2013/10/26(土) 14:34:42.24ID:???ありがとうございます
後々レコード数が増えてからインデックスを貼ると膨大な時間がかかりませんか?
インデックスを貼る行為は
データ容量を大きく食うのとトレードオフですよね?
0092nobodyさん
2013/10/26(土) 14:42:08.77ID:Yys5qMugたしかにそこ良く分かっていなかったです(てかいまだに汗)。
これって動的に表示するのは難しいんですかね?でも大手のサイトとかではよく見るのので、可能は可能なんでしょうが・・・・
0094nobodyさん
2013/10/26(土) 17:18:49.46ID:n7omdGkiActiveRecord::SchemaMigration Load (0.5ms) SELECT `schema_migrations`.* FROM `schema_migrations`
Processing by SearchesController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"OSpOUenfcqQBafhnfsfmwomfwojgcuuvR1+PQ7gE=",
"search"=>{"keywords"=>"sa", "min_price"=>"", "max_price"=>""}, "commit"=>"Search"}
(0.3ms) BEGIN
0096nobodyさん
2013/10/26(土) 19:10:19.48ID:l1LHvxZ+views/hoge
ここのフォルダーに
hoges.html.haml
_tab1.html.haml
_tab2.html.haml
_fuga.html.haml
があって、
hogesから
render 'tab1'
render 'tab2'
をやっても描画されるのに
tab1もしくはtab2から
render 'fuga'
してもテンプレートが見つからないと言われるのはどうしてでしょうか
0097nobodyさん
2013/10/26(土) 19:15:17.02ID:n7omdGkiVALUES ('2013-10-26 08:10:31', 'sa', '2013-10-26 08:10:31')
(13.2ms) COMMIT
Redirected to 〇〇〇〇:3000/searches/18
Completed 302 Found in 97ms (ActiveRecord: 15.6ms)
0098nobodyさん
2013/10/26(土) 19:20:19.60ID:n7omdGkiProcessing by SearchesController#show as HTML
Parameters: {"id"=>"18"}
Search Load (0.6ms) SELECT `searches`.* FROM `searches`
WHERE `searches`.`id` = 18 LIMIT 1
Product Load (0.9ms) SELECT `products`.* FROM `products`
WHERE (name like '%sa%') ORDER BY `products`.name ASC
Rendered products/_product.html.erb (2.4ms)
Rendered searches/show.html.erb within layouts/application (434.2ms)
Completed 200 OK in 613ms (Views: 604.4ms | ActiveRecord: 4.8ms)
0099nobodyさん
2013/10/26(土) 19:23:57.10ID:n7omdGki途中連続規定に抵触し失礼しました。
0100nobodyさん
2013/10/26(土) 21:49:09.91ID:Q8szoofsAJAXコールなんだから受け取った側でちゃんと使ってやれ。
0101nobodyさん
2013/10/26(土) 21:52:54.18ID:???それって体感できるくらいの遅さですか?
アクセスが多くて短時間(例えば一分間)の間に100レコードへの書き込みとかで体感できちゃうレベルですか?
■ このスレッドは過去ログ倉庫に格納されています