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

【RoR】Ruby on Rails Part16

■ このスレッドは過去ログ倉庫に格納されています
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
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)
■ このスレッドは過去ログ倉庫に格納されています