【RoR】Ruby on Rails Part15
人気無い言語の一つだね。
ここの盛り下がり
凄すぎる
cakephp2でたし
移るわ
Railsは天下のツイッター様が使用しているフレームワークです。
つまり、世界最強のフレームワークなのです。
はい論破。
5 :
nobodyさん:2012/07/07(土) 10:46:27.97 ID:LaFxNaBQ
「言語」って…
>>6 まだ、フロント側はRailsでしょ? もうscalaに乗り換えちゃった?
ごく一部でだけ動いてるという話
Monorailだっけ
フロントは無理だろ
まぁそうは言うけど
Railsは簡単らくちんで便利だ
CakePHP:敷居は低いが、理解が進むと面倒くささが鼻につく
Rails:敷居は高いが、理解が進むと加速度的に楽になっていく
Java系:敷居は高いし、理解が進んでも面倒くさい。ただ、ガチガチさは大規模チーム開発には有利
JpMobile使ってるんですが
任意で切り替えって出来ないですか?
スマートフォン使ってるけど、一時的にPC版を見たい〜みたいな場面はあると思うんですが……
>>12 えっとどういう意味でしょうか?
>>13 あ、すいませんそこは知ってます
disable_mobile_view!
を各actionで指定すると一時的に無効にできるんですが
before_filter等で一括指定しようとしても出来ないんです
例えばPC版をクリックしたらCookieにdevice=pcを格納する〜
みたいな感じで考えていたんですが全てのアクションに
if cookies[:device] == "pc"
disable_mobile_view!
end
を追加しなければならないとなるとちょっとあほらしいというかダサすぎるので悩んでおりました
after_filter before_filter共にききませんでした
自己解決しました
みんなはどんなgem使ってる?
おれはよく使う順に
devise
mailboxer
acts_as_messagable
acts_as_taggable
bootstrap
kaminari
paperclip
sunspot_for_rails
これだけあれば大抵のことは出来ちゃう
日本ユーザ向けに
moji
holiday_jp
Rails用というわけじゃないが
rubyが言語で
railsがフレームワークなの?
そのとおり
サーバ側をWinSCPとかで開きながら
編集・開発・テストしていく俺は異端児?
皆はローカルで作ってテストしたアプリを
サーバーにまとめてアップしてる?
最大どの規模くらいのアプリを作ったことある?
コミュニティーサイトくらい?
>>24 IDEのSFTP機能を使って、編集・保存した瞬間に自動でサーバにアップロード。
(netbeansなら余裕。
異端児っていうか規模によるんじゃね
複数人でそれやってるならアッタマオカシインジャネ
普通はローカルで編集してまとめてsvn commitまたはgit pushだよな
↑こうやって定期的に張る奴なんなの?
目的は何?
毎回リンク先同士が関連ないとこだし
SEO操作ではなさそうなんだけど
まぁ自分のメモ代わりにしてるのかもしれない
そのついでに周りの人にも読んでもらおうというありがた迷惑的な何かだよ
自分はたまに読んで参考にしてるけどw
海外のフォーラムとかだと
懇切丁寧に回答してくれる人たちがいるのは何故?
それが仕事に繋がってるの?
日本のフォーラムとか掲示板だと、まともな回答が得られない。
これって日本人がノウハウとして隠して抱えておきたいから?
回答することで今から育つ人たちに将来的に仕事を奪われるから?
違いは何なの?
そのまともに回答を得られないってのが具体的にどこの事言ってんのかわからんけど
初めから日本人もstackoverflowで質問したり懇切丁寧に解説したりしてるからじゃないのかね。
母数の違いだろう
日本語話者なんかたかが1億程度だが、英語は母国語にしていない人も含めると何十億だからな
確かに日本だと初心者への回答って敬遠されがちだな。
海外だとスルーか、親切に回答してくれるかのどっちか。
日本人とは違い、わざわざ煽る人間性の持ち主は皆無。
そもそもstackoverflowとかで回答して評価を高めることで
開発者にとって何かメリットあるの?
時間の無駄遣いとノウハウの流出にしか思えない。
仕事上の敵を自ら増やしてどうするんだ?
そんなちゃちい考え、ほとんどの開発者はもってないってw
ほら日本にもあるだろ、情けは人のためならず、てな
まぁ、英語だとニュアンス的な所はあやふやの所もあるけど、日本みたいに
「初心者です。教えて貰っても判らないので、やってください。と言うか、困ってることをエスパーしてください」
みたいな質問は目立つような所には無かった気がする。
>>35 FREEでも読むといいよ。なんであの手のサイトが流行るのか説明してるから。
日本だと云々言ってる人に限って海外のもろくに使ったことない件
どうしようもない質問はスルーされたりマイナスモデレートつけられたりして
見えないところに追いやられてることが多いよ
>>29 Rails好きはPHP厨と違って常に最新の技術情報に敏感ってことなんです。
Railsスレのように、最先端の事例に関する情報サイトURLが
書き込まれることは非常に良い傾向です。
PHP厨は、最先端の技術には全く無関心ですからね。
何の向上心も無いPHP厨は日本のweb開発業界のがん細胞です。
>>41 だったら何故世界に通用するWebサービスは日本では出来ないんですか?
スポンサーがつかない?
がん細胞たるPHP厨がはびこってるからじゃね?
一掃されればきっと世界にはばたけるよ
smartyとrailsってかなり違う?
違うとしたら、どう違う?
smartyはあくまでテンプレートエンジンで
railsはテンプレートエンジン「も」含むWebアプリケーションフレームワーク
CakePHPあたりと同じレイヤだよ
>>45 smartyに出来なくてrailsに出来ることなんてある??
文脈で分かるだろSmartyのテンプレートエンジンって機能はRailsにとってはごく一部の機能の一つでしか無い
だから機能としては
Rails > Smarty
であって、Railsで出来る事のほうが遥かに多い
smartyに出来ないことなんてない気がするんだが
じゃあSmarty使っとけよめんどくせえ
トンカチとのこぎりがあれば犬小屋は建てられるし犬小屋建てるのに大工道具一式なんていらない
お前が使う範囲で影響でないんならその程度の規模Smartyで充分だろ
>>49 smartyには出来ないことを
具体的に一つもあげられない時点で
あなたの言い分は破綻してるんだよ?
>>50 何?Smartyに出来ないことを教えて欲しかったの?
それならそうと言えよ
あ、俺Smartyが何かよく知らないから間違ってても知らないよ
Smartyはテンプレートエンジンだそうだ。テンプレートエンジンっていうのはデザインとロジックの分離がメインの目的であって
それ以外の機能は全て蛇足
Smartyがいくら機能を積んでるのかは知らないけどね
つまり、プラグインの管理も無ければモデルとの連携もMVCもないRailsと比べるようなものじゃない
しかし時々わくこの手の輩は一体何が言いたいのか・・・
cakephpスレ辺りでsmartyでならなんでも出来る!smarty>>>cakephpってはしゃいできなよ。
>>50 RailsがなくともRubyだけでWebアプリケーションを組むことだって可能っちゃ可能
だからRailsイラネって話にはならんだろ?
php な人向けだと?haml とかと smarty が大体等価で
rails と cakephp, symfony が大体等価
規模によってはまあテンプレートエンジンだけで問題ないんじゃね
今は知らんが、昔は企業の案件募集によく「使用フレームワーク:Smarty」って書いてあったな。
フレームワークじゃないだろと当時から突っ込まれてたが
フレームワークの定義自体が人によって違うんだろうなぁ。
流れをぶったぎってゴメン。
Railsでのデータベースデザインのことです。
viewで同じフォームの中に、
入れ子テーブルのレコードを表示させてたとします。
それらのレコードの欄の端に【削除ボタン】を設け、
クリックしたときに、その入れ子レコードを削除するときって、
親のコントローラーの中に、削除アクションを書いておいて、それを実行させる?
それとも一度、子のコントローラーを呼び出して、そこで削除アクションを実行したあと
元の親コントローラーへリダイレクトで戻ってくる?
どちらが一般的なのかな?
58 :
a:2012/07/09(月) 12:40:51.05 ID:???
>>57 入れ子というのは、例えばこんな感じで良いのかな。
class Item < ActiveRecord::Base
has_many :images, :dependent => :destroy
end
class Image < ActiveRecord::Base
belongs_to :item
end
こう書いておけば、Itemのコントローラでレコードを削除(Itemのdestroyを実行)すれば、
Imageのレコードもまとめて削除されるから
> 親のコントローラーの中に、削除アクションを書いておいて、それを実行させる?
という事で良いと思う。
>>57 REST的な考えからすれば、後者な気がするけどな
>>59 そういう話じゃないだろ
親も消してどうするよ
62 :
59:2012/07/09(月) 14:20:28.25 ID:???
あ、ごめん。
内容を勘違いしてた。
親じゃなくて子のレコードを個別に削除する場合だったか。
その場合は、子のコントローラーを呼び出して、そこで削除アクションを実行するのが良いと思う。
wikiを簡単に導入できるgemってないかな?
rails3.2でオートコンプリート入力用のgemってある?
bootstrap
複数のタグを入力する時に捗るオートコンプリートはないものか?
通常は1ワードだけじゃんね
>>67 それくらいは自分で作れるだろ
対象をタグにするだけなんだから
エロ動画サイトでリンクをクリックしてのタグ検索とかの場合って
@movies = Movie.find_by_tag(params[:tag])
ってするのと
viewの段階であらかじめ各タグのidをパラメーターで渡すようにしといて
@movies = Movie.find(params[:id])
ってするのは
どちらが呼び出し早くなるかな?
どっちか実践的?
実測お勧め
インデックスのはりかたにもよるし
設計について教えてください。
例えば会員制ブログを作ったとします。
もちろん会員は必要に応じて投稿したブログを削除できます。
削除するとき通常はdestroyで完全にレコード自体を削除しますか?
それとも予めdeletedのようなフラグを持たせ、
削除されたら1を代入。
viewでレンダーするときにdeletedに1が入っているものは毎回除外して描画。
どちらが一般的でしょうか?
仮に会員が10万人規模になったら
後者だと呼び出しに余計な負荷がかかり辛いでしょうか?
79 :
nobodyさん:2012/07/12(木) 00:02:33.71 ID:v+PsJCqZ
どうしてこうケースバイケースな質問が続くかな。
宿題かなんかなんじゃねえの
paranoidでも使っとけ
このスレって常に答える気のない連中ばかりで笑える
答えられるだけの実力がないのか、
はたまたノウハウが流れるのが怖いのか
はいはい。そんなこと言っても無駄だから。
答えてもらいたきゃよそ行きなよ。
92 :
>>75:2012/07/12(木) 11:47:31.45 ID:???
>>82は別人です。。。。。
どなたか
>>75 について教えていただけないですか?
アフィカスはかえれよ
94 :
>>75:2012/07/12(木) 12:04:29.16 ID:???
>>93 おまえもアフィカスだろ?
な??w
このスレの住人の本音↓
「こいつに教えたら、俺のアフィ利益が減ってしまう。それはそれは恐ろしい」
>>75 どのデータベースを使っているのかわからないが
基本的にはIDでやったほうが早いと言われていた
だが最近エンジニアの間では
>>76氏が言うように実測で測らなければ
意味がないということが常識として広まってきている
96 :
>>75:2012/07/12(木) 12:10:06.51 ID:???
このスレの住人=エロサイトをRailsで作ってる引きこもり
97 :
>>75:2012/07/12(木) 12:10:54.01 ID:???
98 :
>>75:2012/07/12(木) 12:11:36.31 ID:???
これだから素人がつけあがる
素人に構うな
これだからIDない板は
100 :
>>75:2012/07/12(木) 12:49:26.13 ID:???
ググれよ
なんで実測しろって答えを無視すんのだろうなあ…
103 :
>>75:2012/07/12(木) 21:50:36.26 ID:???
railsが日本で流行らない理由は
俺らみたいに排他的な開発者が多いから
いい加減名前欄消してあげなよ
105 :
>>75:2012/07/12(木) 22:33:48.14 ID:???
会員制のログイン画面で
入力されるIDとパスワードを全てログに記録してる極悪人いますか?
前スレで
ライアンに連絡を取ったらRailsCastsでmailboxerを取り扱ってもらえることになったってホラをふいてた奴は涙拭けよw
外人様が俺たち黄色モンキーのお願いを鵜呑みにするはずねーことくらい皆知ってるぞ?w
俺らみたいなカスがライアン様に相手にされるはずがない
108 :
nobodyさん:2012/07/13(金) 01:28:11.77 ID:sN+YZR3N
レンタルサーバー対応してるの?
そういや
CGIでは動かないと考えた方がいい
(動くことは動くが、遅すぎて使い物にならん)
herokuのようなサービスを使うか、VPSに載せるのが最近の定跡かな
ちょっと教えてほしいんですが
開発途中で要らなくなったモデル、コントローラー、ビュー一式がある場合は
普通にそれぞれのファイルを削除して
ルーティングさえ直せばオッケー??
それでOK
>>117 テストとかfixtureのほうとか消さなくていいのかな?
それとMySQLの該当テーブル
rails destroy XXX で関係するのばっさり消してくれるよ
rails generate model page title:string ....
みたいなモデルを消したければ
rails destroy model page
でmigrationコードからテスト/fixtureまで消してくれる。
>>119 コントローラーとviewは手動削除でOkですか?
すまん。過疎ってたとこ勢いづいたのに便乗して質問させて。
ネストのフォームでアソシエート先の値を編集できるようにするとき
アソシエートの器を用意するために
@parent.build_children
とすると仮にアソシエート先の値をブランクにしたままsaveしても
アソシエート先にレコードが出来ちゃうじゃん?
これって入力フィールドがemptyだったら
アソシエート先のレコードはdeleteするみたいな条件で毎回廃棄処理を入れなきゃダメなの?
空白だったらアソシエート先にはレコードをわざわざ作らないって出来ないの?
説明下手でスマソ
>>120 generate と destroy は対になってるから
view も controller も helper もなんでも同じ構文で消せるよ
>>122 例えば他のアプリから
@viewとcontrollerのファイル自体をコピペで持ってきて使うのはOK?
要するにrails generateは使わないってこと?
それとも
A必ずrails generateしてコードの中身だけをコピペすべき?
@だけでも問題なくアプリは動くけど
testやfixtureなどの整合性はどうなんだろうと思って。
あまり気にせず、controllerやmodelやviewsはいちいちgenerareせずに新規ファイルだけ突っ込んでいってok?
>>124 rails generate と同じことやるんなら、別にコピーでも構わない
あっちこっちでエラー出て面倒になるから
極力generate で作って destroyで消したほうがいいぞ
128 :
126:2012/07/15(日) 07:05:45.49 ID:???
>>125の方法でもいい
あるべきところに、適切なテキストが置いてあれば
それだけでRailsはちゃんと動くからgenerateで作らなくても大丈夫だけど
そのあるべきところに適切なテキストを配置するのに結構手間がかかる
この手間をしている間にミスをする可能性が出てしまうから
極力generateで作ったほうがいい
そのためにgenerateコマンドとdestroyコマンドがあるといっていい
言い換えると作ってる人が楽をするためにgenerateとdestroyがある
>>127 どこに何をおけばどのように動くかきちんと把握できてるなら、generate を使う必要は
必ずしもあるわけではない
逆に、把握できてないなら、素直に generate 使っとけ
把握出来てても普通は generate 使うよなあ
追記で質問
rails g controller action method1 method2 method3
ってしたらviewも対になってmethod1〜3まで出来るよね
controller内のmethod1〜3までの記述は異なるけど
renderはすべてmethod1.html.erb
を呼び出すようにした場合
method2.html.erb
method3.html.erb
は手動で消してもいいの?
もんだいない
controllerとかにコメント残しまくってるんだが
行が増える分だけ動作が遅くなるとかあり得るんか?
ないない
字句解析の時点でコメントスキップされるから誤差もいいところ
>>143 ifなどの条件判断からの処理を複数行で書くのと
一行で端的に極力省略化された書き方するのとでは違ってくる?
そんなのも誤差でしょ
コンパイル時に結合順序の違いが考慮される程度で最終的な構文木なり内部コードなりは一緒じゃないの?
Rubyの実装は知らんけどわざわざ違いを出す理由も思いつかない
146 :
nobodyさん:2012/07/18(水) 20:31:58.90 ID:9zcTnPvu
疑問に思って考えて質問して回答貰う時間でお釣りが来そう。
得意げに1行で書きまくる人居るよね
見にくいだけなのに
昔のperlだとスコープが生成されないぶん後置ifの方が速かったって記憶が。
今はどうかしらんが。
ブロック作るよりは後置が速いと思うよ
ベンチもかなり回さないと分からんけど
> ベンチもかなり回さないと分からんけど
それを「誤差の範囲」というのでは…
ちょっと質問させてください。
例えばSNSでいうメッセージ的なものでもGETにして
URL example.com/messages/46747
Routes 'messages/:id' => 'messages#show', :as => 'show_messages'
ViewLink <%= link_to 'message', show_messages_path>
とするのが王道ですか?
これだとURLにメッセージのIDが丸見えなので不健全な気がしないでもないのですが。。。。
mixi
facebook
google+
twitter
>>151 普通は
ハッシュキー持たせるかな
before_createで
1.MD5あたりで時間をキーにハッシュ生成
/message/:hash_key
で表示
>>154 ありがとん
メッセージ新規作成のときに
URL messages/new/:username
で送信相手のユーザー名を入れて
メッセージ編集画面を開くのも同様にすべき?
このやり方も不健全?
素朴な質問いいですか?
viewの中で
カラムを表示させるときのことです
(特に入れ子のテーブルの)
表示させようとするカラムのレコードがしょっちゅうNilってことが、あるとします。
その場合、viewに毎回いちいち
if (カラムのテーブル名.カラム名)?
をお尻につけてあげなきゃダメですか?
それとも、もっとスマートな方法はありますか?
> 表示させようとするカラムのレコードがしょっちゅうNilってことが、あるとします。
設計ミス、はい次。
>>159 なぜかというと余計なレコードは増やしたくない。
必要な時だけbuildしてネスト先のレコードを作るようにしているからです。
そのネスト先のレコードを使わないと分かっていても
has_oneなどのアソシエーションをくんでいた場合は
空でもいいから必ずレコードは作っておく必要があるのでしょうか?
>>156 URLだけ気にしたところでフォームのHTMLに同様な情報が含まれるだろうから意味がない
>>163 少しでもスパムメッセージとか防げるよね?
>>164 スパムやる人間ならHTML解釈ぐらい楽勝でやってるさ
URLを気にするのはムダな努力
> if (カラムのテーブル名.カラム名)?
これNoMethodError出るよねw
コマンド叩くたびにくっそ待たされるの何とかしろよ
どこがアジャイル開発だ
>>167 Rubyのバージョンとプラットフォームは?
railsの難易度ってどれくらい?
素人ヘッポコ・プログラマーでも出来る?
HTMLとCSSくらいなら分かる
やめとけ
>>158 hobo_support の _? を使うときれいにいくぞ:
カラムのテーブル名.カラム名.なんとか if カラムのテーブル名.カラム名
の代わりに
カラムのテーブル名.カラム名._?.なんとか
hobo_support 全体を require すると起動が遅くなるので、必要な定義だけコピペしてもよろしい
routes設定?について質問させてください。
match 'posts/disable/' => 'posts#disable', :via => :post, :as => :disable_post
としていてindexのビューのテーブルにて
削除したい該当レコードにチェックをつけて、
下記で対象を絞り、複数のPostレコードのフラグを一括で書き換え無効(0)にしていたとします。
Post.find_all_by_id(params[:checked].keys) 以下、フラグ変更処理
ここまではうまくいっています。
しかし、posts/show.html.erb
の中に
フラグ書き換えのための下記リンクを
張ると何故か posts/disable.4
に飛ばされてしまいます。
本当は posts/disable/4 に飛ばしてフラグを変えたいのですが何故でしょうか
<%= link_to 'disable', disable_post_path(@post) %>
match 'posts/disable/:id' => 'posts#disable', :via => :post, :as => :disable_post
>>175 ありがとうございます
それも試しましたが
そう書くと
indexからチェックをつけてdisableアクションに飛ぶと
なぜか
routing error no route matches [post] "posts/disable/"
になります
showから単独でのdisableをしようと飛ぶと
routing error no route matches [get] "posts/disable/15"
になります
もうこれだけで3日間止まっちゃってます。。。。
:as => :disable_post
じゃなくて
:as => 'disable_post'
じゃね
match 'posts/disable(/:id)' => 'posts#disable', as: :disable_post, via: :post
ちなみに詳細から飛ばす時、GETで飛ばしてるなら当然エラーになる。
あとPUTだと思うぞ。
>>179 ありがとう 書かれた通りに直しました。
しかし、いまだに
No route matches [PUT] "/posts/disable/11"
と出ちゃうけど何故でしょうか。。。。
indexのほうは問題ありませんでしたが、
showで posts/disable/11 に飛んで上のエラーが出ます
ちなみにこのように記述しています
routes
match 'posts/disable(/:id)' => 'posts#disable', :via => :post , :as => :disable_posts
view
<%= link_to 'Disable', disable_posts_path(@posts), :method => 'put' %>
controller
def disable
post = Post.find_all_by_id(params[:checked].keys)
...残りの処理...
end
:via に :put と書かないと
>>181 コントローラも下記のように書き換えました
controller
def disable
post = Post.find_all_by_id(params[:id])
...残りの処理...
end
そして routes も
match 'posts/disable(/:id)' => 'posts#disable', :via => :put , :as => :disable_posts
として、複数レコードにチェックつけてsubmitしても
なぜか1レコードしか処理されていないみたいです。
@showから、表示しているレコードのIDだけを、link_toを使って単独で渡して処理する
Aindexから、チェックをつけてる複数のレコードのIDを、submitで渡して処理する
この両者に対応させる処理を1つのアクションに集約するって可能なんでしょうか?
一覧のviewのform_forのとこが間違ってる
つかブラウザでソース確認しなよ
おまえら端切れの情報でよくアドバイスできるなw
>>183 そこは盲点でした
indexのviewはこんなかんじです。 これじゃ配列として
>>182に書いたコントローラにパラメータを渡して処理できてない?
<%= form_tag(:action => disable, :via => 'put') do %>
<% @messages.each do |m| %>
<tr>
<td><%= check_box_tag "id",m.id %></td>
<td><%= m.last_message.id %></td>
<% end %>
<%= submit_tag "無効化" %>
<%= check_box_tag "id",m.id %> を <%= check_box_tag "id[]",m.id %> に書き換えたら出来ちゃいました
こんなもんなんでしょうか???
Twitterみたいに
hoge.com/ユーザー名
とするときに
コントローラーの予約語が入る時以外
→ユーザーの情報に飛ばす
ここのルート設定は問題ないんだけど
新規作成でユーザー名で予約語と被ったときに
弾く方法ってどうすればいいのかな?
バリデーションで予約語は弾く!的なものあったっけ?
コントローラ後から付け足すかも知れんからそんな機能は無いが、自分で作っても大したことないっしょ
ユーザ名にするのは、routesの順番で
>>189 たとえばpostsってコントローラーが既にあって
新規ユーザーがpostsってユーザー名で新規登録しようとするのを防ぐには
どうすればいいのかな?
予約語DBでも作るしか無いんじゃないの
とりあえずナイーブにチェッしておいて、あとで
スマートな方法が見つかったら書き換えればいいよ。
具体的にどういうこと?
列挙してチェックしろってことよ
んで予約語だのコントローラ名を動的に引っ張ってこれるような上手い方法見つけたら差し替えろってこと
>>194 要するにUser Modelに
コントローラーの数の分だけバリデーションの行を書けってこと?
列挙っつったってDBに入れるなりrakeで何かに書き出すなり色々工夫しなよ
195 名前:nobodyさん [sage] :2012/07/22(日) 17:03:58.42 ID:???
>>194 要するにUser Modelに
コントローラーの数の分だけバリデーションの行を書けってこと?
少しは頭使えよ…
198 :
nobodyさん:2012/07/22(日) 19:04:56.84 ID:GOaeCh76
199 :
nobodyさん:2012/07/22(日) 19:11:40.75 ID:GOaeCh76
>>197 ここで聞いても具体的な方法なんて誰も分からないよ
201 :
nobodyさん:2012/07/22(日) 19:41:44.27 ID:GOaeCh76
202 :
nobodyさん:2012/07/22(日) 22:03:35.08 ID:GOaeCh76
>>190について
User modelに
validates_exclusion_of を使えばいいことは分かったけど、どうやって端的に列挙すればいいのか分からない
それは、配列で登録できないキーワードを列挙するしかないでしょ。
validates_exclusion_of :name, :in => ['posts', ...]
配列の部分をDBで管理しておいてもいいけど。
RoRであとからactionを追加したい時ってどうするんですか?
link_toで:action => :newact
っていれただけだと、なぜかshowにidがnewactでわたってエラーになります。
newにnewact.html.erb、contoroller.rbに def newactを足しても
変わりません。
rails generate controller sample newact
ってしたら、書いていた他のactionが全部消えました。
206 :
nobodyさん:2012/07/23(月) 13:37:11.00 ID:ZvaJ+abo
REST
「GET」「POST」「PUT」「DELETE」
Skinny Controller, Fat Model
>>207 match ':controller(/:action(/:id(.:format)))'
です。
209 :
nobodyさん:2012/07/23(月) 19:59:58.47 ID:9hnh66oE
どうせ resources のあとに match させようとしてるんだろ。
210 :
nobodyさん:2012/07/24(火) 04:21:55.87 ID:z+HRsGzr
211 :
nobodyさん:2012/07/24(火) 12:33:21.04 ID:z+HRsGzr
212 :
nobodyさん:2012/07/24(火) 12:46:07.03 ID:z+HRsGzr
>>209 その通りでした。
ありがとうございます。
generate controllerすると、route.rbに勝手にgetができるんですね。
214 :
nobodyさん:2012/07/26(木) 04:54:18.18 ID:33u1kgJZ
ActiveRecord の中で、assets/images/ にアクセスしたいのですが
流儀に従ってフォルダパスを取得する方法ありますでしょうか?
image_path() のソースを追ってみたのですが、asset_tag_helper.rb#asset_paths に
入っていった所で断念してしまいました。。
215 :
nobodyさん:2012/07/26(木) 09:22:16.35 ID:KMBCE3o3
ARの中からか…
期待しているものとは違う気がするけど、
Rails.configuration.assets.paths.grep(/images/)
とか?
皆デザインもやってる?
Railsでのコーディングはだいぶマスター出来たんだが
デザインもやりながらだと尋常じゃなく時間がかかってしまう。
Rails生産性高すぎで仕事が速く終わってしまうから
サーバーの管理もやってるよ
デザインはそんな奇抜なものはやってないけどね
これからはMVC分業じゃなくて一人のエンジニアが
全部やっていくなんてことになりそうな勢い
218 :
nobodyさん:2012/07/27(金) 09:43:41.43 ID:/rhnY9UG
219 :
nobodyさん:2012/07/27(金) 09:48:13.25 ID:/rhnY9UG
>>217 デザインはcss程度ってこと?
さすがに画像編集まではやってないよね?
鯖管理とかって、どの程度やってるの?
Railsアプリ動かすためには鯖設定まで当たり前のことだと思ってる
memcacheいじったり、最適化を図ってるってこと?
具体的にどういうことしてるの?
>>215 いける範囲ですね、ありがとうございます
>>217じゃないけど。
イントラで使うようなシステムのボタンとかの画像編集は自分とこで済ませちゃったりもするけど
外向けのは基本的にデザイナーに外注にだしてるなぁ
フリーランスだから鯖契約からパフォーマンス調整メンテナンスまで全部やるはめになってるねえ。
223 :
217:2012/07/27(金) 14:44:35.46 ID:???
言葉が悪かった
デザインというかJavaScriptをやっているといえばよかったかな(当然CSSも
画像の編集はやらない
>>222氏の言うとおり外注だったりクライアントが持ってくる
画像をそのまま使ってる
あとアイコンとか角を丸めたり、横線一本のちょっとした画像は自分で作ってる
サーバー管理ってのも正確には間違いでサーバーのセットアップおよびDB構築
(ハードの選定と調整もふくめて)をやってる
ただ最近はレンタルサーバーだからハードの選定ってのはほとんどやってないに等しい
サーバーサイド/クライアントサイドの処理とDBにかかる負荷とかその辺分かってないと
これからは厳しいと思うよ
JqueryでJavascript書けますとかRailsでサーバーサイド処理書けますとか
多分数年後には完全に土方の仕事だよ
コーディング出来ますなんてので食ってける時代は終わってるもんね。
企画屋がちょいっと勉強したぐらいでそれなりのものできちゃうし。
225 :
nobodyさん:2012/07/27(金) 15:32:45.84 ID:/rhnY9UG
226 :
nobodyさん:2012/07/28(土) 15:52:59.21 ID:avv7CnGE
土方とそれ以外の違いって何?
要領が悪いか良いかじゃないの?
学歴積んでコミュ力鍛えて要領よく良い会社に入って中貫する側にまわるとか
SNSとかで名前売って変が企業立ちあげてみるとか
変な日本語
230 :
nobodyさん:2012/07/29(日) 14:33:49.86 ID:K0RFcA0z
もう、このエンドレスアップデートによる仕様変更に付いていけなくなったわ
BundleやAssetsやCoffeeScriptとか、余計なお世話すぎる
アップデートに併せて、毎回全ケーステストやり直しとか、PHPじゃないんだからさ。。
ドキュメントが相変わらず貧弱だから、アップデートに追従するためにはChangelogを常に監視するか
コミュニティで有名人な人の日記を常時ウオッチしてないと付いていけない
ActiveRecordと数点の付属コンポーネントをチョイスして、自前フレームワーク組んだ方がいいわ
更にコンサバを求めるなら、Pythonに転ぶしかないかなぁ
>>230 それだと、Rackから車輪の発明するしかなかろ? あるいは、Padrinoで落ち着いている組合せを使うとか?
別に毎回アップデートしなくても使えるだろ
ごめん ここはrailsだったか w sinatraとかpadrinoは禁句だったな。 誰かスレ立ててくれ!
gem いれて installやマイグレートまで行って
テーブルなんかが作成された後で
やっぱり使いたくないってなった場合は
どうやったらインストール前の段階に戻せますか?無理?
Apacheのように、奇数系と偶数系で安定版・開発版とちゃんとメンテしてくれているなら良いですよ
でもRubyもRailsも、そうなってないじゃないですか
PHPを使っていても、動作がオカシイと思ったらPHPコアのバグだったりして悶絶、
しぶしぶアップデートせざるを得ない、って展開になる訳で
我々はー、PHP4のセキュリティサポートが打ち切られて、PHP5向けに多数を書き直す羽目になった
あの骨折りを忘れていないぞー
236 :
nobodyさん:2012/07/29(日) 18:33:54.88 ID:bt657PD9
>>234 DBのマイグレーションはrakeで戻して、
コードはgit checkoutなりsvn revertなりすればいい
ここで四の五のぐだぐだいってるくせに
さっさとpythonだかなんかに移らない人ってなんなの?暇なの?
>>236 db はステップバックで戻れそうだけど
それ以外に何が作られたかよく分からないから
戻し方が分からない
git経由じゃなくて
gemに記載→bundle installしたんだけど
239 :
nobodyさん:2012/07/30(月) 00:26:05.97 ID:GgNcwden
gemが使用時になにか作らせるタイプのやつ(rspec:install とか)は、
プロジェクトをバージョン管理しておいて、やる前の状態に戻せるように
しておいたほうがいい。
作る時の生成メッセージを覚えてはいられないだろうし。
generatorを追加するタイプのものなら、script/rails generateしたものは
script/rails destroy で元に戻してくれる。(generateされたマイグレーション
も消えるので、ダウンマイグレーションを忘れず実行しておくこと)
単にgemを取り除く作業は、Gemfileから消してbundle clean
>>239 rails g simple_captcha
rake db:migrate
してしまいました
db:migrateにより新しいテーブルも作られ出来てしまいました
これらを実施する前の状況に何とか戻したいんです
241 :
nobodyさん:2012/07/30(月) 02:04:23.46 ID:GgNcwden
lib/simple_captcha_setup.rb を見た限りでは、
1. rake db:migrate で1つ前のバージョンにダウンする。
(simple_captch_data というテーブルが丸ごと消される)
2. db/mibrate/バージョン_create_simple_captcha_data.rb を削除。
3. app/views/simple_captcha と中のファイルを全部消す。
でいいんじゃね?
>>241 まじ、ありがとね。
1の一つ前のバージョンに戻すのってどうすればいいの??
243 :
nobodyさん:2012/07/30(月) 03:28:27.29 ID:roZLOn75
244 :
nobodyさん:2012/07/30(月) 03:28:45.44 ID:GgNcwden
1. 消したいマイグレーションの *1つ前* のバージョンを指定して
rake db:migrate VERSION=指定
2. 消したいマイグレーションファイルを消す
3. (あれば)残りのマイグレーションを rake db:migrate で実施
なお、開発中ならデータベースごと削除して、消したいマイグレーション
だけ取り除いてもう一度rake db:migrateしてしまうのが簡単。
>>243=生産性のない愚痴ばかり常に垂れてる社会のクズ
何か言ったか(書き込んだか)と思えば、データだけを食う役にも立たない文句ばかり
こういう奴に限って何の能力も持たず口だけw
ユーザー登録時に入力させたユーザー名(ユニーク)を
サブドメインとして使うことは出来ますか?
http://taro.hogehoge.com にアクセスすると
users_controllerのshowアクション(ユーザー名はサブドメインで検索して呼び出し)を呼び出すような
rails より web サーバ側でやった方がよい機能じゃいかなそれは。
mod_rewrite とかでリクエスト書き換えで対応するな、自分なら。
249 :
nobodyさん:2012/07/30(月) 15:58:35.48 ID:roZLOn75
250 :
nobodyさん:2012/07/30(月) 16:00:26.43 ID:roZLOn75
251 :
nobodyさん:2012/07/30(月) 16:03:20.36 ID:roZLOn75
>>249 rails3の場合はどうするのがいい?
>>252 rails3用のgemは残念ながら今のところ無い
254 :
nobodyさん:2012/07/31(火) 15:30:37.24 ID:h6iDzAHp
下記のテーブルがあったとします
@人リストテーブル
A国リストテーブル
Bその人が、ある国に初めて行った日を格納するテーブル(一人の人が一つの国に対して1レコードしか存在しない)
このアソシエーション関係を書くとしたら
どう書けばいいの?
人 has_one 国 :through 初
なんて使えるようになってたんだね
257 :
nobodyさん:2012/07/31(火) 20:21:42.68 ID:h6iDzAHp
258 :
nobodyさん:2012/08/01(水) 02:38:12.37 ID:ND6/DGqv
259 :
nobodyさん:2012/08/02(木) 13:10:57.96 ID:vMqv0WqL
260 :
いむ:2012/08/02(木) 20:35:02.19 ID:???
ゲームを作って自分のサイトやブログで公開しよう。
面白ければ人が集まります。途中経過も載せようね。
「ウ〜ディ〜タ」とは?
・完全無料のゲーム作成ツールです。
・初心者には難しいですがwikiや講座や情報やブログも充実してるので安心。
ツクールでは物足りないけどプログラミングは苦手という方にお勧め。
・作成したゲームは自由に配布したり、コンテストに投稿することも可能。
もちろん作ったゲームを販売して儲けをだしてもOK。
■作り方しだいでなんでも作れます。
■他人が作成した「コモンイベント」を利用すれば、自分では開発が難しい
ゲームシステムも容易に実現できます。
261 :
nobodyさん:2012/08/03(金) 06:45:41.85 ID:whVuDNv1
レバカ共の集まるスレw
Railsでサブドメイン使ってる人いる?
コントローラー名をあてて利用してたり。
サブドメインを使いまくるメリットなんてないよね?
どう上手く活用すればいいのか分からない。
263 :
nobodyさん:2012/08/03(金) 14:01:41.05 ID:baKTN4l4
すいません
railsで管理画面を作るときにいつも思うんですが
○月○日に何人入会した!
とかの集計結果を表示するときに
ActiveRecordだとデフォルトではUTCで時間を保存するのでDB上では9時間ズレが発生します
これをそのまま集計に使うと9時間ずれた範囲の時間で集計してしまうのですが
これをみなさんの場合、どう回避しおられるでしょうか?
264 :
nobodyさん:2012/08/03(金) 14:40:02.40 ID:C7JQhHSY
267 :
nobodyさん:2012/08/03(金) 18:00:20.33 ID:ure6xS56
>>263 日本からしか使わせる気がないなら、
config/application.rb で Tokyo とか Osaka を指定してしまうのが簡単。
既存レコードを維持したいならひととおり9時間加える必要がある。
横から失礼します
ARのTime.now ではなく、DB側での CURRENT_TIMESTAMP 定数を使って
値を差し込みたいのですが、これを指定する方法はあるのでしょうか?
not null default CURRENT_TIMESTAMP で宣言してnullを入れればいいと思ったのですが、
DB側が null 制約エラーにしてしまう様子で…。
269 :
nobodyさん:2012/08/04(土) 22:40:19.96 ID:oo1VkaQV
>>262 サブドメインにすると別のアクセスとみなされるから大量にコネクションはれる利点はある
基本的に一つのドメインにつき4つまでしかコネクションはれない
だから画像とかを別のドメインに置いて同時に読み込める量を増やしてる
リアルタイムに4本以上のコネクションが走りまくるFacebookのマイページみたいな部分では使うと思うけど
そんなに利点は無いかなーと
SEO的にもね
270 :
nobodyさん:2012/08/05(日) 18:06:55.52 ID:OVoaG5Fu
jdbcで何故かdb:createとdropが機能しない。
エラーも何も出ないが、DBを作れないし、落とせない。migrationはできる。
なんとなくJDBCのアダプタのバージョンやMysqlのバージョンが悪い気がしているんだけど…
Java (1.7.0)
jruby (1672/ruby187-352)
MySQL (5.5.25a)
gems
* activerecord-jdbc-adapter (1.2.2)
* activerecord-jdbcmysql-adapter (1.2.2)
* jdbc-mysql (5.1.13)
互換性のあるバージョンとかあったりしますか?
273 :
nobodyさん:2012/08/07(火) 00:36:05.61 ID:WPXqzc1X
本番環境にGit使ってPUSHしたりPULLしたりしたいんだけど参考になるページ無いですか?
手元で開発して本番環境にPUSH
本番環境の方をサーバー再起動だけすれば変更適応出来る
みたいなのが理想です
274 :
nobodyさん:2012/08/07(火) 00:49:04.69 ID:NLsKYWOm
capistranoで検索。
275 :
nobodyさん:2012/08/07(火) 00:51:34.03 ID:AZah7YVe
capistranoはコードの配置される向きが違うような。
pushしたいだけならhonbanサーバにもgitリポジトリ置いといて
git remote add honban ...
git push honban ...
サービスの再スタートはgit push hookを使えるのでは?
>>275>>276 サーバー側でプロジェクトつくって
それをgit cloneでローカルに持ってきてそのままpushしていく感じでできそうでした
ありがとうございました
281 :
nobodyさん:2012/08/07(火) 21:50:23.80 ID:PxYxo5tO
個人でiphoneアプリ、Windowsアプリをマーケットに売って生き残れ
格安iPhoneEラーニング(学習動画多数あり)
http://tinyurl.com/7wj77om コワーキングスペースJP
http://tinyurl.com/76vdrny コワーキング帳
http://tinyurl.com/brzs486 javaやlinuxは手間がかかる 一人でやるには手間がかかりすぎる 手間がかからないで一人で開発できて
人の多いところで直接販売できる仕組みが提供されているメーカ製言語だけやる ずばりiphone またはWindow 8 Metro App Store C#
やるならメーカー製の言語 洗練された仕様 脆弱性が少なく 開発ソフトが優れ 課金ライブラリ アップデートライブラリが提供されていて 情報、書籍が多く開発しやすい
奴隷になりたければオープン系をやればいい 時間がかかり 人は多く 仕事の取り合い 足の引っ張り合い 脆弱性が多く 互換性がなく 癖があり 大規模開発中心
詳細設計しかやれない体になって年取ってぽいだ 独立もできない 手間のかかりすぎる仕様だから
派遣屋 IT経営者はその方が喜ぶ 大規模分割開発では使い捨てても独立はできまい 代わりはいくらでもいる 嫌なら辞めろ
若い派遣営業は舐めた態度をとってくる ひどいピンハネ
オープン言語、日本独自開発の言語・フレームワーク ガラパコ携帯 javascript html5 android java linux python rubyやnode.jsとかやめとけ
メディアに金を払ってステマ宣伝してくるが釣られて手を出しても情報は少なく手間がかかり スパゲッティコード 未完成 デスマに陥る
コンパイルできないからパクられ 直接売る場所がないから企業に買い叩かれ金にならない 生きていけない奴隷仕様だ
ここから抜け出すにはiPhone一択 またはWindow 8 Metro App Store(未確) C#
Objective-CやC#を覚えるとサーバーサイドからクライアントサイドまでカバーでき人の多い場所でソフトを売る権利を得られる
仕事や趣味でObjective-CやC#をやっておけば派遣切りされても会社辞めることになってもソフトを売って生きていける それはセーフティーネットになる
WEBサーバーIIS Win2008ServerVPS SqlServer Oracle MySql 言語はマーケットで売れるメーカー製のみ C#は自分用業務支援ツールとして使える
例えばPHPでWEBアプリを作っていて管理者画面はC#(EXEアプリ)で作るとかなり早く作れる(Smartyなんか使うよりもかなり早くだ)
C#のソースを出さなければWEBアプリの著作権も守れる ASP.net(C#)+管理EXEアプリ(C#)+iPhone
C#マーケット Windows8 Metroアプリ WindowsPhone Surface PS Vita Xbox360 iphone(mono使用)
iPhoneマーケット iPhone iPad 予定 iTv iCar i (家電製品)
地方に安い土地を買いコンテナ型の格安高性能オフィスを建て(300万〜500万)
レンタル自習室&シェアオフィス・コワーキングで収入を得ながらそこでアプリを開発する
http://tinyurl.com/7pb2yaa http://bit.ly/iLIpJa iPhoneはヤフオク脱獄モデルで 15kで買える b-mobileで月千円で利用できる
288 :
あ:2012/08/10(金) 12:58:55.33 ID:???
289 :
nobodyさん:2012/08/11(土) 10:41:30.87 ID:WR5LI86N
290 :
nobodyさん:2012/08/14(火) 04:51:13.48 ID:rgBGRNye
292 :
あ:2012/08/17(金) 17:05:51.78 ID:iqs6Maxn
宣伝の貼り付けばかりで誰も見なくなったなこのスレ
見てるよ!
リンク先も興味がある時は見てるよ!
295 :
nobodyさん:2012/08/18(土) 23:59:49.33 ID:pV3e4UA3
rails serverで立ち上げたアプリのログに、静的ファイル(画像、CSS、js)のログを出さない方法はありますか?
作成時のみバリデーションの前にある処理を実行したい。
before_createだと、バリデーションの後になってしまう
before_validationだと、更新時にも実行されてしまう
何か良い方法は無いでしょうか。。
if: :method_name オプションつけて、
そこから呼んだメソッド内でnew_record? 調べる
ActiveRecord::Baseクラスで使用可能なメソッドはどこで調べたら良いでしょうか?
例えばorderはどういう動作をするメソッドなのか調べたい、という場合です。
300 :
nobodyさん:2012/08/23(木) 18:30:52.08 ID:2RSB5tzq
301 :
nobodyさん:2012/08/24(金) 04:37:27.78 ID:cRZu9+Hs
302 :
nobodyさん:2012/08/24(金) 22:03:56.38 ID:cRZu9+Hs
303 :
nobodyさん:2012/08/24(金) 22:05:27.81 ID:cRZu9+Hs
304 :
nobodyさん:2012/08/25(土) 02:40:14.08 ID:IGjt7TwS
UstreamみたいなサイトをRailsで作りたいんですが
動画配信のGEMとかってあります?
305 :
nobodyさん:2012/08/25(土) 03:27:46.98 ID:YPbua9R1
306 :
nobodyさん:2012/08/29(水) 07:58:31.37 ID:r4JFvKP7
307 :
nobodyさん:2012/08/29(水) 15:36:32.41 ID:r4JFvKP7
RailsによるアジャイルWebアプリケーション開発という本を読んでいるのですが、
テストの章にこういった式がいくつか出てきます。例えばp85より。
assert_equal "has already been taken", product.errors[:title].join('; ')
この引数2つが同じ値になる場合はあるのでしょうか?
'; 'でjoinしている時点でありえないと思うのですが。
309 :
308:2012/08/29(水) 18:13:03.49 ID:???
失礼しました。
配列の要素がただひとつでありそれがその文字列だった場合に一致しますね。
なぜ、[0]ではなく.join('; ')しているのかはわかりませんが・・。
assert_equalは仕様として、引数2つが異なった場合、返り値として2つ目の引数を
表示する仕様だったりするのでしょうか。
310 :
nobodyさん:2012/08/29(水) 20:35:00.84 ID:a8+pw54H
>>308 Agile Web Development with Rails (4th Edition)の原文(ver 2.2)pdfで確認。
> Because the list of error messages is an array,
> we use the handy join method to concatenate each message,
> and we express the assertion this way in order to verify that
> there is only one such message.
product.errors[0]のチェックだと、errors[1]以降にに同じ文がある
場合でもパスしてしまうので、セパレータ付きのjoinを利用している。
新しい版(ver 3.0)のコードでは
> assert_equal ["has already been taken"], product.errors[:title]
となっている。配列としての比較を行っているわけですな。
RoRとpython djangoは割と比較されるけど、
日本ではRoRが圧倒的に多いよね。
やっぱRubyが国産だから安心なのかしら。
アマゾンだかどっかの人が書いた文章で
python が(良い言語なのに)あんまり流行らなかったのは
インデントに文法的な意味を持たせたことやZopeの存在で他言語ファンに攻撃されまくったことにより
pythonユーザ自体が排他的になってしまったのが原因だみたいなのを書いてたのを見たことがある
もっともまだPerlがご健在だったころの文章だから現状とはいろいろ違うだろうけど。
314 :
あ:2012/08/31(金) 13:29:21.42 ID:FvV3a6Sv
315 :
あ:2012/08/31(金) 13:32:01.50 ID:FvV3a6Sv
>>315 それそれ!なんでか見つけられなかったんだよ
ありがとう!
3つ以上のモデルのアソシエーションのやり方がわかりません…。
A has_many B
B has_one C
という状況なのですが、
A.Bs.buildはできるのに、
A.Bs.C.buildだと、Cがundefined methodになります…。
318 :
nobodyさん:2012/09/01(土) 19:24:32.84 ID:8nwhobkn
関係によるとしか。
319 :
nobodyさん:2012/09/01(土) 19:25:10.02 ID:8nwhobkn
A.Bs.build_C じゃね?
320 :
nobodyさん:2012/09/01(土) 19:27:02.44 ID:8nwhobkn
ごめんはやとちり。
Bs にCを作らせようとしているようだけど、
それだとどのBがCを持つことになるのかわからないのでは?
321 :
317:2012/09/01(土) 23:59:16.27 ID:???
>318-320
ありがとうございます。
確かにどのBがCを持つのかわからないですね…。
色々ググってみましたが、検索語が悪いのか見つからず、
どうすればいいか全くわからない状態です。
直接または検索のヒントなどいただけると嬉しいです。
ちなみに、rspecでサンプルデータを生成しようとしています。
@hoge = A.Bs.C.build(name: "taro", age: 20)
のような感じです。
ラジオボタンの選択肢にテキストフィールドを与えたいのですが、
どうすればよいのでしょうか? rails 3.2.1です
<%= form_for(@item) do |f| %>
<% for item in @lately_item %>
<%= f.radio_button :name, item.name %> <%= item.name %> <br />
<% end %>
<%= f.radio_button :name, "text_field" %> <%= f.text_field :name %>
この様な感じなのですが、うまく連携させる方法が分かりません。
323 :
nobodyさん:2012/09/02(日) 05:52:59.49 ID:/cxboObV
普通に
A.Bs.create
A.Bs[0].build_C
でよいのでわ
>>317 お前:throughスキルが低すぎるんだよ
もっと勉強しろ
優しいねw
327 :
nobodyさん:2012/09/03(月) 12:26:36.07 ID:uLMD4mTW
328 :
nobodyさん:2012/09/04(火) 09:02:02.54 ID:rr9Kp66Y
プログラミングそのものを設計・思考するのに要する時間よりも
バージョンや、Rmagickなどの各種パッケージを入れたりするのに、
いちいち調べまくって悩まなきゃいけないようなプログラミング環境ってどうなのよ?
コンフリクトとか多すぎて馬鹿馬鹿しい
330 :
nobodyさん:2012/09/05(水) 17:47:12.27 ID:EDLQnS5l
331 :
nobodyさん:2012/09/05(水) 18:51:35.05 ID:EDLQnS5l
>>329 Gemfile に書いといて bundle install で終わり
という開発環境しか経験ないんだけど、何がそんなにややこしいの?
>>332 gem install rmagick
してごらん
Macはbrewで何も気にせずに入るし、Centとかでも、2ステップほど増えるけど楽でしょ
Railsの実力は世界最強Webサービスのtwitter様が証明済みです。
「環境構築がどうのこうの」なんて言ってるヤツは、一生、古い技術に縛られながら
生きていく古いタイプのエンジニアでしょう(笑
大切なことなのでもう一度言います。
Railsの実力は世界最強Webサービスのtwitter様が証明済みです。
>>334 centでもパス通せとか
めんどいことばかりなんだが。。。
yumってこんなもんなの?
337 :
nobodyさん:2012/09/05(水) 23:45:46.98 ID:eJNRH/4F
なんのパス通すんだ??
twitterのAPIがrailsまんまでワロタ
Rmagickってrails制なの?
340 :
nobodyさん:2012/09/06(木) 09:11:43.02 ID:4IRYbXq4
のー。
341 :
nobodyさん:2012/09/06(木) 13:47:02.55 ID:1FvcMk1t
>>333 そんなことか。
こんなこともできないとは経験値が足りなさすぎるな。
お前は別な仕事したほうがいいと思うよ。
それと、人に教えを乞うときは「してごらん」ではなくて
「教えてくださいませんか」と言うんだよ。わかった?
343 :
nobodyさん:2012/09/06(木) 22:03:50.33 ID:0mAiGAOq
くっそワロタwwwwwwwwwwwwwwwwwwwwwwwwwwww
実例教えてもらっといてこの態度wwwwwwwwwwwwwwwwwwww
確かにlibmagick9とか色々入れないと行けないからimagemagick関連とかは面倒くさいね
他にもnokogiriとか
rmagickというよりImageMagickは昔から鬼門
全部tar ballからmakeしてたから、今かなり楽だと感じるわ
>>342 頭わるっw
出来るからこそ実例あげたのにね
お前みたいな人間(いや、ヒトモドキ?)こそが
何も分からず言葉だけででしゃばってる典型的な例。
教えてクンは帰れよ
>>342 がクズすぎてワロチw
自分が答えられない無能なんだろう
ナムー
Rubyって結局何をするための言語なんですか?
>>345-346 連投乙。俺はここから教わることなんか何もないよ。
火病は見苦しいから半島に帰ってくれるか。
350 :
nobodyさん:2012/09/08(土) 22:54:04.59 ID:R7EpJbJg
画像、動画専用のうpろだを作るとします。
画像の保存形態はBLOBみたいなものと、
画像そのものをどこかへアップロードして、そのURLを保持させる形態
どちらがオススメですか?
閲覧パスワードを必須とさせる場合を考えると前者でしょうが
BLOB型を多用するとデータベースが遅くなると聞いています。
>>351 画像はWebサーバから見えないところに置いて、画像へのアクセスはRailsが処理するという方法もあるね
こうすれば、パスワードも必須にできるし、データベースも使わないで済む
>>354 そんな技あるんだね。
具体的にいうとどういうことですか?
何でググればいいかすら分からない
>>355 具体的にって…書いてるまんまなんだが…
逆にこれ以上何を説明すりゃいいのかが分からん
ビューのループの中でパーシャルを呼ぶのってどうなんですか?
ログがダーっとなるので嫌な感じなんですが。
partial は重いからループでぶん回すのはやめとけ
Rendering Collections とか見た方が吉
ありがとうございます。そうします。
L4スイッチの使用例は、Googleキャッシュであろう。
Googleは200台以上のキャッシュサーバを負荷分散することで、
検索エンジンとしてずば抜けた高速処理を謳い文句に登場し、
アメリカでは最も成長の早い企業の一つとしても認知されている。
Google成長を影から支えていたのは、L4スイッチに他ならない。
http://ja.wikipedia.org/wiki/レイヤ4スイッチ
368 :
あ:2012/09/14(金) 06:32:00.21 ID:???
うんうん。
今日もRailsスレは最新技術情報に敏感だね。
PHP厨スレとは全く違う雰囲気だ。
やっぱり、Rails好き=新しい技術に敏感な優秀な技術者
という公式が成り立っているんだろうね。
372 :
あ:2012/09/14(金) 22:18:20.04 ID:???
373 :
nobodyさん:2012/09/14(金) 23:56:22.12 ID:JjyBVKn8
すいません、
activerecordで関連の話をしたいのですが
ブックマークのテーブルが代表例なのですが
bookmarks
・user_id
・recipe_id
・point # 評価
こういう感じのテーブルからレシピ一覧を取得する場合、has_manyの関連で取ると、お任で付与した情報がhas_many throuだと取得できないのですが
もう1点
bookmarks = Bookmark.where( " user_id = ? ", current_user.id )
@recipes = Recipe.where( " recipe_id in (#{bookmarks.to_sql})" )
こうやってレシピ一覧を取得した後、viewでブックマークの削除ボタンを作るときに
ブックマークのidを取得するまともな方法がない気がするのです
正直、activerecordのhas_oneやhas_manyは’持たれる’方のテーブルにしかuser_id等のカラムを作れない
その方法でしか関連のある対象を取得というのが
正しいレールには見えないのですが…
みなさん、一度はこういう経験あると思うのですが
そのときどうやって解決してきました?
374 :
nobodyさん:2012/09/15(土) 00:07:00.99 ID:CwKHaMSX
@recipes = Recipe.joins("INNER JOIN bookmarks ON recipes.id = bookmarks.recipe_id").where(:user_id=>current_user.id)
これじゃダメなの?
Twitterのフォロー・フォロワー関係のような
同じモデル同士をリレーションする場合の関連ってどう貼ればかっこいいです?
User
UserAndUser -> send_user_id:integer, get_user_id:integer
って形で貼ってるんですけどこれだと上手くリレーション貼れないしどういう方法が定石です?
378 :
a:2012/09/15(土) 02:05:30.66 ID:???
379 :
a:2012/09/15(土) 20:34:36.09 ID:???
nginxとunicornの組み合わせがいいのか
それともapacheとunicornの組み合わせがいいのか。
永遠のテーマですね。
383 :
nobodyさん:2012/09/17(月) 23:38:18.08 ID:N15upZse
384 :
nobodyさん:2012/09/17(月) 23:39:47.57 ID:N15upZse
385 :
nobodyさん:2012/09/17(月) 23:40:20.77 ID:N15upZse
class Hoge < ActiveRecord::Base
belongs_to :hoge_hoge
belongs_to :fuga_fuga
end
上のHogeみたいなモデルのクラスがあって、belongs_toでリレーションがあるクラスの一覧を取得する様なことは可能でしょうか?
Hoge.reflections.select { |name, refl| refl.macro == :belongs_to }.map { |name, refl| refl.klass }
>>391 ありがとうございました!!色々イントロスペクション出来そうです。
変数に応じてモデルを検索するのってどうやりますか?
params[:search].where(...)
みたいなことをやりたいのですが
いまはcase params
when hoge
で分けて検索してますが冗長で
395 :
nobodyさん:2012/09/20(木) 22:42:50.50 ID:MqmKDaA+
>> 394
何を指しているかわからないけれど
params[:search]にテーブル名が入るなら
params[:search].sigulalize.camelize.constantize
かな…
"users".sigulalize.camelize.constantize # Userモデルを取得
396 :
nobodyさん:2012/09/20(木) 23:06:13.78 ID:MqmKDaA+
>> 374
副問い合わせするか、inner joinかとかそういうことでなくて
bookmarksとrecipesをセットで取って来てメモリに確保する方法がほしいんですよね…
普通のhas_many関連の場合
Arelのincludesメソッドで出来るけど
今回みたいな場合n+1問題起こさないで取る方法がrails内部に見当たらなくって
知っていたら教えてほしいなって…
いやincludesでできるけど
ほら、こういうつまらない問題で開発作業がストップするから、じゃぁ 既製品のフレームワークなんて
やめて自作のフレームワークを作ろうか → 糞フレームワークが出来上がり開発効率がさらに悪くなる
っていうオチになるんだよね。
ORマッパは嫌 → じゃぁ 普通にSQLを使えばいいんですよ^^っていう柔軟性が無いのが、
現代のフレームワークの脆弱性のひとつだよね。
だから最終的にはtwitterからも見放されてしまった。
これからの時代に求められるフレームワークは、
「過去からの呪縛の開放」です。
なんでも、かんでもORマッパじゃないとダメなんですか?
ってことなんです。
twitter もなんか開発者から見放されそうになってきてるな
>>399 Railsは別にActiveRecordを強制してはいない
ActiveRecordのデキが良すぎるので、それを使った方が開発効率が上がるからみんな使ってるだけ
ちなみにtwitterがRailsから乗り換えたのはパフォーマンスの問題な
402 :
nobodyさん:2012/09/22(土) 06:01:47.09 ID:0hZYDUN1
>>399 .find_by_sql
.to_sql
403 :
nobodyさん:2012/09/22(土) 06:06:05.29 ID:0hZYDUN1
404 :
nobodyさん:2012/09/24(月) 22:28:28.07 ID:KRhG+cTD
405 :
nobodyさん:2012/09/25(火) 10:09:29.62 ID:wdinHrdn
has_many throughな3つのモデルを1つのフォームでまとめて更新する方法で詰まっています。
A has_many Bs
A has_many Cs through Bs
C has_many Bs
C has_many As through Bs
B belongs to A
B belongs to C
で、ABCをまとめて更新したいです。
Aにaccepts_nested_attributes_for :Bs
Bにaccepts_nested_attributes_for :C
を設定して
Aのコントローラのdef newに
@a = A.new
@a.Bs.build.build_C
と書いていますが、そもそもこれが正しいのかに加え、def createの書き方もわかりません。
@a = A.new
@a.Bs.build.build_C(params[:A])
と書いてみましたが、params[:A]がCの要素として認識されてしまっている感じで
うまくいきません。
どなたかご教授ください……。
>>406 accepts_nested_attributes_forが書かれていて、fields_forとか使ってviewが適切に書かれていれば、
createメソッドの中では
@a=A.new(params[:a])
@a.save
だけておk
すみません、Webプログラムの初心者です。
あるセレクトBOXで値を選択したとき、別のセレクトBOXで選択できるオプションを変更するさいに一番ベターな方法を教えていただけないでしょうか?
私が考えているのは、
オプションの内容をjavascriptのオブジェクトとして保持しておき、あるセレクトBOXが選択された時点で別のセレクトBOXを変更するというものです。
Rails3.2でこのような処理を簡単に行う方法が提供されていますか?
よろしくお願いいたします。
javascript スレに行きなよ
rails 関係ないやん
すみません
remote_function とかでできますか?
411 :
nobodyさん:2012/09/27(木) 15:37:00.02 ID:A89+rwib
observe_fieldはRails3で消えてるんだが
URL貼って「それぐらいググればすぐ見つかるぜ」ってドヤ顔したいだけなんだろうが、
6年も前のURLが今も使えるかどうかぐらい、少しは考えろよ
ま、それはそれとして、Rails3はJavaScriptが全面に出る部分は削除したみたいだね
HTML5で将来的に対応できると思われる部分は、ブラウザがHTML5に対応できていないところを
JavaScriptが補完してHTML5っぽく動くようにはするが、それ以外はざっくり削った感じ
jQueryを初めとしてJavaScriptだけで解決するのも簡単になったので、RailsがJavaScriptの
領域にまで口を出すのはやめよう、という流れのようだ
嘘を嘘と見抜けないと難しい
belongs_to :author な Book で
Book.create(:author => Author.find(1))
こういう書き方って出来ないんでしょうか?
Book.create{ |book| book.author = author } とか
Book.create(:author_id => Author.find(1).id) なら出来るんですが
Author.find(1).create_B
@user.friends.contents
みたいな感じでhas-manyのhas-manyをすべて取得する方法ってありますか?
@blog.entries.comments
とかのほうがわかりやすかったかもです
418 :
あ:2012/09/28(金) 15:50:45.73 ID:???
419 :
あ:2012/09/28(金) 15:54:16.94 ID:???
SELECT
*
FROM
table_1
LEFT OUTER JOIN table_2
ON table_1.Key = table_2.Key
WHERE
table_1.name='aaa'
というSQLを発行したい時に、ActiveRecordで.joins()メソッドにテーブルの結合条件をオプションとして渡すことは可能でしょうか?
421 :
nobodyさん:2012/09/28(金) 16:27:31.75 ID:ajm4gEtx
googleのpagespeedで「リソースをgzipで圧縮すると転送サイズを削減できます。」って出たんですけどHerokuでgzip圧縮に対応することってできますか?
>>417 @blog.entries.map{ |entry| entry.comments }
上と同じ
@blog.entries.map(&:comments)
もしくは
class Blog
has_many :entries
has_many :comments, :through => :entries
で @blog.comments
>>421 config.ru に use Rack::Deflater でgzip圧縮出来るで
423 :
421:2012/09/28(金) 17:13:28.61 ID:ajm4gEtx
Hobo の一部の hobo_support を使えば
@blog.entries.*.comments
みたいな書き方も
>>420 試して無くて申し訳ないんだけど
has_many で適切な関連を作ってそれをjoinsすればいいんじゃないかな。
それから
>>420の例だとincludesなら分かるけどjoinsは意味ないと思う。
427 :
あ:2012/09/30(日) 04:07:34.40 ID:96gMez+C
「RailsによるアジャイルWebアプリケーション開発」っていうのを買ってきた。
429 :
nobodyさん:2012/09/30(日) 17:57:14.87 ID:96gMez+C
430 :
nobodyさん:2012/09/30(日) 17:58:03.63 ID:e4GqLLPi
HeorkuでExpiresヘッダに有効期限設定するにはどうすればいいですか?
Apacheだとmod_expiresを使うとか言われてるんですけど。
431 :
あ:2012/09/30(日) 19:19:15.43 ID:96gMez+C
432 :
430:2012/09/30(日) 19:49:07.84 ID:e4GqLLPi
>>431 ありがとうございます。が、rails3.0で作ってるのでうまくいきません。
書き忘れてました。
任意のHTTPレスポンスヘッダを返す方法
Controller内で、@response.headers または @headers を直接変更することができる。
434 :
430:2012/10/01(月) 14:56:37.99 ID:EGhbPl+Z
>>433 ApplicationControllerに以下の記述をしてもダメでしたorz
before_filter :cache_static_page
def cache_static_page
response.headers['Cache-Control'] = 'public, max-age=31536000'
end
Raisを学ぶ = アジャイル開発を学ぶ
って、ねーちゃんが言ってた。
おい、おまえら。
RailsってDBの水平分割とかどうすんの?
プラグインでもあるのかい?
438 :
nobodyさん:2012/10/02(火) 02:58:21.18 ID:i8D0Svtc
質問スレ見つからないので、ここで聞かせて下さい!
oauthを使いたいのですが、インストールしたはずなのに
↓↓↓
$ bundle install
・・・
Using oauth (0.4.7)
Using oauth2 (0.8.0)
Using oauth-plugin (0.4.1)
・・・
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
「application_controller.rb」でrequireしようとすると
↓↓↓
require 'oauth'
「見つかりません」と出ます
↓↓↓
cannot load such file -- oauth
#require 'oauth' とコメントアウトするとエラーは出なくなります。
どうしてでしょうか?
よろしくお願いします。
440 :
あ:2012/10/02(火) 18:41:27.62 ID:i8D0Svtc
bundle show oauth
>>438 PHPのsymfonyにあるんだからRails様に無いわけないよね。
>>439 RubyとRailsのバージョンとWebサーバは?
なんで答えへんねん!
446 :
nobodyさん:2012/10/04(木) 19:31:56.40 ID:D+hz1CZ/
447 :
nobodyさん:2012/10/04(木) 22:16:07.94 ID:mj9zdAS/
検索調べ学習わからない
carrierwaveを使ってるんですがurlの非推測可は可能ですか?
ファイル名.拡張子
はいいんですけど、_thumbとかを消せば元ファイルアクセスされちゃうのはどうにかならないもので?
449 :
nobodyさん:2012/10/05(金) 20:31:43.13 ID:okQeMaJ3
450 :
nobodyさん:2012/10/06(土) 00:57:19.30 ID:BtTGZRov
451 :
nobodyさん:2012/10/06(土) 01:01:26.41 ID:BtTGZRov
452 :
nobodyさん:2012/10/06(土) 01:02:52.43 ID:BtTGZRov
453 :
a:2012/10/06(土) 01:45:23.89 ID:BtTGZRov
ユーザ認証アドオンdeviseに関する質問です。やりたいことは登録時のcreateの挙動の一部を変えたい、です。
調べると、Devise::RegistrationsControllerを継承しcreateメソッドをオーバライドすれば良いらしいです。
そこで以下のようなコントローラを作り、routes.rbを
devise_for :user, :controllers => {:registrations => "registrations"}と編集しました。
class RegistrationsController < Devise::RegistrationsController
def new super end
def update super end
def create
@user = User.new(params[:user])
# @userをごにょる
respond_to do |format|
if @user.save
format.html { redirect_to room_path, notice: 'User was successfully created.' }
else
format.html { render action: "new" }
end
end
end
end
すると、@user.saveが成功した場合はうまく動くのですが、フォームの記入が不十分などの理由で失敗した場合、
NoMethodError in Registrations#create
Showing devise/registrations/new.html.erb where line #4 raised:
undefined method `errors' for nil:NilClass
とエラーをはいてしまいます。変更前はどこの入力が不十分なのか表示されていて今後もそのような動作にしたいです。
else節のformat.html { render action: "new" } がよくないと思うのですが、どのように書けばよいのでしょうか?
方針としたら、registration_controllerのcreateがどうなってるのかみてみたら?
もとの方は二重の分岐になってるみたいだけど
Rubyに慣れたら「PHPなんて使ってられるか!! ぺっ!!」って感じでしょ?
Railsは複合主キーには対応していません(キリッ
def before_create
self.time = 60
end
としていたのですが全く働かず、その理由がわかりませんでした。
サーバを再起動しなければいけないのか?などなど試してもうまく行かず。
before_create :set_time
def set_time
self.time = 60
end
とすればうまくいきました。なんなのー!!
30分ほど時間を使ってしまいました。
こういうの多いです。レイルズ。
ただの常識知らず
扱いやすさではRailsをパクったsymfonyのほうが上だよね。
でも、もうPHPは使いたくないのだよ。
before_create { ... }
だったという話?
463 :
nobodyさん:2012/10/09(火) 13:46:14.45 ID:MZFtPoaB
464 :
nobodyさん:2012/10/09(火) 13:55:42.74 ID:MZFtPoaB
class UsersController
def index
@tmp = 10
end
end
とすればUserのindexのviewでローカル変数@tmpを使えますが
Application.html.erbでローカル変数を使うにはclass ApplicationController
にどのような記述をすれば良いのでしょうか?
466 :
nobodyさん:2012/10/09(火) 19:21:44.10 ID:MZFtPoaB
ヘルパー関数を定義してその中で毎回findすれば良いのですね。
うまくいきました。ありがとうございました。
Rails 3.2.2で、productionモードでアセットパイプラインを有効にした状態で
プリコンパイルしていろいろと結合したCSS(/public/assets/application.css)の読み込みと
「/app/assets/stylesheets配下」の結合されていないCSSを
developmentモード時の時のようにstylesheet_link_tagの指定だけで
読み込ませることって同時にはできないんですかね?
アセットパイプライン有効時に、/app/assets/stylesheetsのほうにおいてあるCSSを
stylesheet_link_tagで読もうとすると「isn't precompiled」といわれて落ちてしまいます。
>>468 うろ覚えだけど、appとlibとvendorのassets以下は全部アセットパイプラインの対象だから、public/stylesheets/とかにおいて最悪普通のhtmlタグで読めばいいんじゃなかったかな
470 :
nobodyさん:2012/10/10(水) 09:40:01.79 ID:YCof8F2Q
471 :
nobodyさん:2012/10/10(水) 16:05:45.44 ID:YCof8F2Q
472 :
nobodyさん:2012/10/14(日) 06:40:12.93 ID:/XWMUeNY
473 :
nobodyさん:2012/10/14(日) 06:42:36.34 ID:/XWMUeNY
match ":controller/:action"
を利用していると、存在しないactionが叩かれると/500.htmlが叩かれると思います
これをカスタムすることはできますか?
rescue_from はつかってみたのですが完全にスルーされて効果がありません
rescue_from ActionController:: RoutingError, :with => :error_method
475 :
nobodyさん:2012/10/14(日) 17:57:50.62 ID:/XWMUeNY
Rails3じゃ出来ないだろたしか
routes.rbの最後に
match '*path', :to => 'application#not_found'
を書くとか?
>>474 できる
routes で /500 に match させて、エラーページ用のコントローラ作ってそこに飛ばす
rails3で
twitterのフォローボタンみたいに
ajaxを使ってページのリロードをせずに
ステータスとボタンの表示を変更することって簡単に出来ます?
その際には ○○○○.js.erb
みたいなファイルも用意しなきゃいけないと思うんですが、
このケースの場合だとそこの記述の方法について
詳しく解説しているrailsのサイトや本がなくて困っていますorz
要するに
クリックするとレコード削除(または作成)→それと同時に表示しているボタンのアイコンもFollowとUn-followが切り替わる
といった仕組みです。
480 :
nobodyさん:2012/10/15(月) 12:31:10.11 ID:nTSyGpBO
ありふれた質問なのかもしれませんが検索してもちょっと出て来なかったので
質問させて下さい
railsでユーザーのプロフィールお入力するとき
パスワードやメールアドレスは確認用に2回入力しますけど
これの同一性の比較って、コントローラーとモデルのどっちでやっているでしょうか?
モデルの内側でチェックするにはパラメーターを何処かに保存しないといけませんので
難しいところもあるとおもうのですが
よく使うplug-inとかは…さすがにないでしょうか?
481 :
nobodyさん:2012/10/15(月) 14:01:34.98 ID:nTSyGpBO
482 :
480:2012/10/15(月) 14:13:10.65 ID:nTSyGpBO
>>481 ありがとうございます。
そこではなくjs.erbの書き方が分かりませんorz
484 :
nobodyさん:2012/10/15(月) 18:07:13.13 ID:sCkYKUjB
>>484 ありがとうございます
リンク先にもあった
無理やりRails2のような
やり方をするのと
Rails3のやり方でするのは
どちらが好ましいのでしょうか?
そりゃあ 2より 3だな
なんせ新しい
普通、ロジックはモデル内に書かないんじゃない?
コントローラーでするもんでしょ。
488 :
あ:2012/10/16(火) 10:30:27.78 ID:???
489 :
あ:2012/10/16(火) 10:39:58.61 ID:???
https://github.com/217/ankikun 一対多の関係を作って、controllerで、一から多にアクセスして保存するまでの流れを作っているのですが、うまくできません。
ActiveRecord::UnknownAttributeError in WikiController#create
unknown attribute: wiki_id
とエラーが出てしまいます。
今回の一はwiki本体、多は、wikiのpageです。
いろいろ調べたのですが、わかりませんでした。
よろしくお願いします
491 :
あ:2012/10/16(火) 17:35:24.60 ID:???
wiki_id ってカラムは wikipages の方に作るんでは。
Railsでログを抑制する方法ありますか?
具体的には、存在しないコントローラーを叩かれたときなどのログです
IPhoneのIPodTouchIcon notfound
とかそこらへんのログが多すぎて必要なログが埋もれてしまっています
どうすればログに表示されないように出来ますか?
grepしてみてはどうでしょう!
>>469 遅くなりましたが、ご回答ありがとうございます。
できればapp/assetsに置いておきたかったのですが、やはり無理そうなので
レスいただいた通り、Rails 2.x風にpublic/stylesheetsに置いて自前ヘルパでなんとかすることになりました。
postgresのアダプタ(というかpg側)がいけてないなぁ
全部がActiveRecordに乗っかって処理出来るわけではないので、時々生のSQLを叩くのだけど、
ActiveRecord::Base.connection.exec_query() を呼ぶとき、prepared bind queryを使おうとすると
"SELECT * FROM foo WHERE hoge = $1 AND foo = $2", nil, [[nil, val1], [nil, val2]]
と、冗長構文になる。。
論理削除を実装したくて、acrs_as_paranoidを入れようとしてるんだけど、
undefined local variable or method `acts_as_paranoid' for …
ってエラーが出て困ってます…。
Readmeに従い、Gemfileに gem "rails3_acts_as_paranoid", "~>0.2.0"って書いて
bundle installして、0.2.4がインストールされてる。
ちなみにRailsコンソール上では、ちゃんと動いてる(気がする)。
destroyすると、deleted_atカラムに日付入るし。
ブラウザでacts_as_paranoidを指定してるモデル下のページ表示しようとすると
前述のエラーが出る。
誰か助けてください…。
502 :
501:2012/10/19(金) 14:36:31.85 ID:???
追記:
Railsのバージョンは3.2.7です。
503 :
501:2012/10/19(金) 15:46:30.69 ID:???
ヘッダーとフッターだけ共通で2カラムのデザインのサイトを作ってるんですが
右のカラムが
ユーザー用と、その他用、ログインしてる人用
みたいに何種類があります
これをrender partialで読んでいるんですがviewをどこに置くのが定石ですか?
今はviews/rightに置いてますけどいまいちな気もして
shared?
shareだな
datamapper は includes しなくても関連先を1回でロードするらしいのですが、
activerecord で同じような動作をさせることは可能でしょうか?
>>507 Blog.where(id: 1).includes(:entry)
とかでできる
リレーション貼ってないとダメだけど
509 :
nobodyさん:2012/10/22(月) 18:14:34.46 ID:BgSV8PVF
ログに
AbstractController::ActionNotFound
(The action 'undefined' could not be found for HogeController)
みたいなエラーが結構起こってます
サイト内で /undefined に飛ばしている場所は一箇所もないのですが何が原因でしょうか……
対応の方法もわからず悩んでます
carrierwaveのホワイトリストって違う拡張子入れるとraiseしちゃうんだけどどうにかできない?
validate通すだけでraiseするからこれをただのバリデーションエラーにする方法は無い?
>>508 datamapper ではその includes の指定がいらないみたいなんです。
activerecord で同じように includes の部分を省略する方法があれば
メンテがすごく楽そうだなと思って質問してみました。
Railsって、URLの拡張子によって送信するcontent-typeを自動的に設定してくれるじゃん?
/posts/123 # html
/posts/123.html # html
/posts/123.xml # xml
/posts/123.json # json
これはいいんだけど、/posts/ の場合はどうするの?
/posts/ # html
/posts/index.html # html
/posts/index.xml # xml
/posts/index.json # json
とかになるの? /posts.json/ とかではないの?
よくしらんから教えて。
515 :
nobodyさん:2012/10/24(水) 21:39:01.54 ID:srAswaKY
>>457 複合主キーって具体的にどんな時に必要?
必要性がイマイチ分からない
>>518 たとえば、ソーシャルアプリでユーザのアイテムを管理するテーブルを例にあげてみようか。
たぶん知ってるかも知れないけど、MySQLの場合は
SELECT * FORM hoge WHERE user_id = ?
ORDER BY item_id
というクエリを使うときに
user_idとitem_idで複合主キーになっている場合が一番高速に実行できる。
(MySQLの主キーはインデックスオンリースキャンが可能だから
設計の美しさの話ではなく、あくまでも実行スピードを重視した場合の話。
必須ということではなく、MySQLなら
なるべくそうなってるとイイよねっていう話。
対応してませんて…
普通に add_index で張れるだろ
>>519 なるほど
アソシエーションうんぬんで複合主キーがあったら便利ってわけじゃなく
索引付けて検索スピードを早くするのが目的なのね。
ありがとう
たとえば
テーブルにcodeっていう文字列のカラムがあって、
そこをレコードごとに入力の際のバリデーションのパターンを変えたいです。
そのパターンはフォーム上でユーザーが指定して作れるような形にしたいのですが
どういった作り方が望ましいでしょうか?
バリデーションパターン例
1. abcdefghij (アルファベット小文字のみ。10字まで)
2. AbCdEfGhI(アルファベット大文字小文字混合。9字まで)
3. 9876554210(数字のみ。9字まで)
4. A1b2C3d(アルファベット大文字小文字数字混合。7字まで)
5. 123-456-789(数字9桁。3桁ごとに-で区切られる)
などパターンはユーザーがレコード作成時に指定する形で
ありとあらゆるパターンが想定されます。
上記はあくまで一例です
前にも見たなそれ
>>522 無理
カラムのバリデーションは固定
ましてや正規表現みたいな入力形式をレコード毎に適用とか不可能
>>522 validate :code_check
attacessor :hoge
def code_check
if self.hoge == "typeA"
unless self.code =~ /[A-Z]+/
errors.add(:code, "がパターンと一致しません")
end
elsif self.hoge == "typeB"
........
end
end
泥臭いけどこんな感じでやる以外ないかな
Rails3.2.7です。
データの更新履歴を保存するの、何のプラグイン使ってますか?
paper_trailを入れてみたものの、has_manyの扱いがちゃんと実装されてないらしく
困っています…。
>>525 ということはユーザーが正規表現を使うように
任意で無限のパターンを作り出すようなことはできないのねorz
ありがとう
>>526 中間テーブルのtest_idをユニークにしたら
それは多対多じゃなくないですか。
>>528 正規表現をDBにつっこんでevalすりゃできるかもしれんが、evalを使うのはセキュリティ的にも
よろしくありませんわな
>>526 それはhasoneだから多対多じゃない
>>530 ありがとう
やっぱり、こういうのって実現不可能なんだね
>>529 >>531 自分のデータベース・Railsに対する理解が欠けていたので、一対多だと理解出来なかったのが原因でした。
感謝しています。ありがとうございました。
has and belong toってどんなケースで使う?
中間テーブルに関連以外の情報が必要ない多対多
でも無くなるんじゃなかったっけ
deprecatedだな
538 :
nobodyさん:2012/10/31(水) 00:13:46.73 ID:jWweZIhx
はびたむを使うかわりに、二者の関係に名前を付けて、
互いにhas_many throughが標準的だな。
class Book < ActiveRecord::Base
has_many :taggings
has_many :tags, :through => :taggings
こういうテーブルでbookにタグを付けられるようにしたのですが
ひとつのbookに付けられるタグの数を5つまでに制限したいです。
どのクラスにどのようにvalidatesを書けば良いんでしょうか?
真ん中かな
もしくは実際にタグ付け処理する外側で。
taggableにそういうの無かったっけ?
>>539 validates :taggings, length: { maximum: 5 }
ダックタイピングの威力が存分に活かせる例だな
>>540-542 ありがとうございます。
lengthは文字列だけだと思ってました。
taggableも調べてみます。
saveするときに、3つある_idオブジェクトの1つの中身が勝手に変わるんだけど、こんな事にであった方いらっしゃいます?
自己解決しました。
acts_as_taggable_onを使っているのですが、タグを追加したユーザーを覚えておいたり、特定のユーザー以外はタグロック(消せなく)したりできますか?
ユーザーってなんだよ
その定義もなしにできるできないなんて分かるわけないだろ
そう書けばできる
>>548 確かにそうですね。すいません
Pixivのようなユーザーが写真を投稿できるサイトでタグ機能をacts_as_taggable_onを使って実現しています
photo
->user_id
user
->id
タグは、他のユーザーからも編集可能にしています。
しかし、その写真のオーナーが消されたくないタグを設定している場合もあるのでオーナーが設定したタグの中でなんらかの方法で選択したタグのみ削除不可能にしたいと思います
この実現は可能でしょうか?
>>550 可能でしょうか?の前に、自分でやったこと書かないと
これこれこういう風にやったけどできませんでした
みたいに
552 :
nobodyさん:2012/11/02(金) 04:38:42.49 ID:iQCIFpEx
ふつうにオフィシャルに書いてあったな
オーナーにしたら他のユーザーから編集できなくなるしロックは触れてすらない
書いてないじゃん
555 :
nobodyさん:2012/11/02(金) 11:18:16.25 ID:iQCIFpEx
557 :
nobodyさん:2012/11/02(金) 14:06:03.14 ID:iQCIFpEx
558 :
nobodyさん:2012/11/02(金) 14:15:47.04 ID:iQCIFpEx
559 :
nobodyさん:2012/11/02(金) 15:37:16.96 ID:iQCIFpEx
ここで聞くことじゃない気がするけど
mogokってrailsだけ?sinatraとかpadrino無理なんかな。
rails
5000行以内
ごく一般的な記述
という制限で、それなりなWebアプリって作れると思いますか?
どういうアプリかは置いておきまして。
漠然としていて申し訳ない。
565 :
nobodyさん:2012/11/06(火) 14:11:24.48 ID:XaGhKZz4
566 :
nobodyさん:2012/11/08(木) 17:10:59.33 ID:JIoZcSH9
リレーションでhas_many thoughを使っている場合
user <-> user_and_user <-> user
このように友人関係を作ったとします
その友人関係(間のリレーション)を削除したい場合はどうすればいいですか?
追加は
user.user_and_user << tarou
で出来るんですが、逆に外すのはどうすればいいですか?
user.user_and_user.where(:id=>tarou.id).destroy
とするしかありませんか?
collection.delete(object, …)
569 :
nobodyさん:2012/11/09(金) 02:53:38.20 ID:uWhs7eHW
どうでもいいけど friendship とかの名前にしたいな、それ。
570 :
nobodyさん:2012/11/09(金) 08:29:12.27 ID:ljQorQ20
571 :
あ:2012/11/10(土) 08:38:26.35 ID:7ECMacrf
そのコントローラーでだけロードしたいJSとかはどう使えばいいんですか?
例えばuploadコントローラーのアクションではupload.jsを使いたいみたいなときに、assets/javascript/に入れてしまうと常に呼び出されてしまうからそこに置けないし
573 :
nobodyさん:2012/11/11(日) 19:51:19.75 ID:QM75yKBE
コントローラーでUserのscope activeが呼ばれているかを
rspecでテストするにはどうすれば良いのでしょうか。
User.should_receive(:active)では駄目でした。
Railsで検索フォームを設置したら本番環境でのみ
ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT):
が表示されます
対処法などはありますか?
577 :
nobodyさん:2012/11/12(月) 20:25:50.21 ID:jRANh58G
578 :
nobodyさん:2012/11/12(月) 21:46:03.81 ID:TP7cnTaV
>>572 セレクタで区別する。
必要ならbodyにid付けたり。
asset pipeline はそもそも Rails アプリケーション全体で使う JavaScript をひとまとめにして
ブラウザのキャッシュを効かせようというものなので、コントローラによって読み込むファイルを
分けるという発想と相容れるものではない
580 :
a:2012/11/13(火) 01:48:59.08 ID:3XNuJC/B
なるほど!
582 :
nobodyさん:2012/11/21(水) 12:06:15.42 ID:bGZkbmii
コントローラ内の全てのアクションをキャッシュするようにしたいとき
簡単に指定する方法はありませんか?
instance_methods(false).each{ |action| caches_page action }
としたら一番下に書かないと駄目みたいでそれは避けたいです。
584 :
nobodyさん:2012/11/21(水) 23:28:20.97 ID:zJbRMsxp
>>583 是非は別として、method_added フックでやったらどうか。
RESTFULLなURLの参考になるサイト無い?
検索とかのURLとかどうすればいいか悩む
586 :
nobodyさん:2012/11/22(木) 21:31:58.25 ID:8YsF3rYJ
検索は、「フィルターを指定した一覧」と解釈するのがよいのでは?
つまりcollectionのGET
画像サーバーを別に設けてるんだけど
そこからDLさせるのってどうすればいいですか?
画像ファイルを保存する時に別のサーバーに保存してます
それをクリックでDL出来るようにしたいんだけど
send_fileだとローカルのファイルしかDLさせられない
でも、いちいち別サーバーからアプリケーションサーバーにDLしてから送信なんてのは非効率的すぎる
何かいい方法ありません?
link_to
589 :
nobodyさん:2012/11/23(金) 11:07:23.15 ID:bRXvxwC+
画像サーバはhttpしゃべれるの?
>>584 ありがとうございます。検討してみます。
>>588 それじゃあ普通のブラウザ内展開になっちゃいます
>>589 Nginxなのでヘッダーの付加なんかはできます
NFSでマウントさせときゃええやん
593 :
nobodyさん:2012/11/23(金) 21:49:46.01 ID:bRXvxwC+
>>591 Amazon S3とかじゃなく、自分で制御の効くサーバなら、
ダウンロードさせたい画像のリクエストに Content-Disposition ヘッダを
付けたらどうか。
mongoとmysqlを同時に使いたいんですが
モデルの作り方がよくわからず。。。
よろしくお願いします
595 :
nobodyさん:2012/11/25(日) 07:20:42.47 ID:s8Eu0FpF
>>594 まずは、モンゴたんとマイ・エスキュエルたんを自宅に迎えます。
その後、モデルへ育成させます。
< 恋愛育成ゲーム RoR 攻略法サイトより
RubyかPHP 、どちらかしなければなりません。
どっちのが簡単ですか?
どっちも簡単
普通は両方覚える
phpは有力なミドルウェアが多いから、やりたいことがはまればphp
Wordpress,drupal,Mediawiki,xoops, open pneとかテーマとプラグインで楽できる
でも、コードを書くと汚くなりがち
いくつもたくさん開発して資産を蓄えていきたいとか、こまめに改修していきたいならRubyのほうが楽というか楽しい?というべきか
601 :
nobodyさん:2012/11/28(水) 08:00:32.83 ID:IhJ0H87A
602 :
nobodyさん:2012/11/28(水) 08:07:06.13 ID:IhJ0H87A
Ruby on Railsの作者で有名なDavid Heinemeier Hansson(通称DHH)氏がオーナーであるとのことです。
DHH氏は車にも精通しているのか,部品はパガーニ社が扱う最良のものを自らチョイスしたそうです。
もちろんオーダーメイドであるため現在のところ世界に1台しかありません。
ほぼ同スペックの「トリコローリ」というモデルが130万ユーロ(約1億4000万円)と言われている
http://gihyo.jp/dev/clip/01/orangenews/vol59/0008
>>602 こういうの見るとrails使いたくなくなる
604 :
nobodyさん:2012/11/28(水) 08:14:45.17 ID:IhJ0H87A
俺なら1画面1時間で造れるわ
606 :
nobodyさん:2012/11/28(水) 08:16:26.21 ID:IhJ0H87A
どうせFpm使ってないんだろ
608 :
nobodyさん:2012/11/28(水) 08:18:18.36 ID:IhJ0H87A
609 :
nobodyさん:2012/11/28(水) 08:24:48.32 ID:IhJ0H87A
610 :
nobodyさん:2012/11/28(水) 08:27:30.47 ID:IhJ0H87A
なんで古い記事ばっかり張るんだ?
コード1行10円とかそんなあほらしい事やってるとこないだろwww
一つのサーバーで複数のrails + unicornを動かすと管理がめんどくさくなっちゃうんだけど何かいい方法ないですか?
アプリA
アプリB
アプリC それぞれでbundle exec unicorn_rails
するとどれかを止めたり再起動したい時にpgrep -f 'unicorn_rails mater'ってやると3つでちゃってどれがどれかわからないです……
unicorn起動時に/tmp/hoge.sockというのが出来るのですがこれに直接再起動や停止命令をおくれたり出来ますか?
それであれば色々解決するのですが……
>>614 unicorn の config に pid を出力する設定がある
思い切って cloud foundry とか PaaS 自作とか
Unicornの管理ってアプリごとにserviceスクリプトに書けなかったっけ?
620 :
nobodyさん:2012/12/02(日) 02:55:59.68 ID:sF7VWq7Y
すいません、エスパーさん助けてください・・・
<%= submit_tag "確定する", :confirm => 'OK?' %>
という単純なコードがなぜか思い通りに動きません。確認のポップアップが出ないのです。
HTMLになったソースを見ると、
<input type="submit" value="確定する" name="commit" data-confirm="OK?'>
とちゃんと変換されています。
javascriptも有効にしています。
原因としてどんなことが考えられるでしょうか。
621 :
nobodyさん:2012/12/02(日) 15:06:54.92 ID:1JWssV6U
くだらねえ
バージョンは?rails.js読み込んでないんじゃない
ブラウザのコンソールを開いてJavascriptのエラーが出てないか、404って出てないかをチェック
404は黒字だから目立たないぜ
jqueryとjquery ujsをロードしてるか
あとJavascriptを使ってるgemが悪さしてないか
Twitter Bootstrap rails のレイアウトとかはJavascriptを後ろでロードするからいろんな不具合でやすい
rails consoleからrakeタスクを実行することってできませんか?
できればrakeのenvironmentがrails consoleと同一(環境をロードしない)
になると嬉しいのですが。
625 :
nobodyさん:2012/12/04(火) 12:42:31.82 ID:X5tWvJbJ
>>624 >> require 'rake'
>> MyApp::Application.load_tasks
>> Rake.application['db:migrate'].invoke
ここまでは出来た。
日付変更と同時にユーザーの持っている数値を一括で0にしたいのですがふつうにやると
User.find_each do |u|
u.point = 0
u.save
end
こうなると思いますが数万件あるのでとても非効率的な気がします
なにか一括で更新する方法は選りますか?mysqlを使っています
あ、mysql上であれば
UPDATE users SET point = 0
でいいのてすか、これをRailsこら呼ぶ方法がわかりません
628 :
nobodyさん:2012/12/04(火) 13:33:28.69 ID:X5tWvJbJ
>>626 update_all
>>627 AR::Base.connection.execute
>>624 ありがとうございます。Rakefileに
def rake(taskname)
Rake.application[taskname].invoke
Rake.application[taskname].reenable
end
と書いてconsoleからロードしたら良い感じになりました。
tasknameをクォートしないといけないのが面倒ですが・・・
Rails3.1を使っています。
Ajaxを使いページの更新をせずに更新情報だけを特定箇所に反映させ表示させたいです。
(Twitterと同じようにFollowボタンをクリックで→Un-Followに。Un-Followをクリックで→Followに)
次レスに書いたコードを貼り付けます。このようにコードを書き試しましたがエラーが返ってきます。
おそらく set_follow.js.erb に問題があるのかと思いますが。。
エスパーさん、どうかお願いします。
-----「users_controller.rb」-----
def set_follow
friend = User.find_by_username(params[:username])
if f = Friendship.find(:first, :conditions => { :user_id => current_user.id, :friend_id => friend.id})
f.destroy
flash[:notice] = "Now added to follow list"
respond_to do |format|
format.html { redirect_to set_follow }
format.js
end
#redirect_to :back
else
Friendship.create(:user_id => current_user.id, :friend_id => friend.id)
flash[:error] = "Now deleted from follow list"
respond_to do |format|
format.html { redirect_to set_follow }
format.js
end
#redirect_to :back
end
end
-----「users/index.html.erb」-----
<div id="follow_status">
<% if user_signed_in? && current_user.friends.find_by_id(user.id) %>
<%= link_to sanitize('<i class="icon-remove icon-white"></i> ') + 'Un-Follow', follow_user_path(user.username), :class => 'btn', remote: true %>
<% elsif current_user != user %>
<%= link_to sanitize('<i class="icon-ok icon-white"></i> ') + 'Follow', follow_user_path(user.username), :class => 'btn btn-primary', remote: true %>
<% end %>
</div>
-----「set_follow.js.erb」-----
$("#follow_status").html("<%= escape_javascript(render f) %>");
長々となってしまいました。
ちなみにajaxの記載を外すと、ロード(更新)こそはするもののFollow←→Un-Followで
きちんとフラグに応じて表示が切り替わります。
ページロード無しでの表示の更新を実現したいです。
fがviewに渡ってない
>>630 エラーが帰ってくるならその内容見て問題点を把握すれば良いのでは?
>>634 レスありがとうございます
この場合、どのようにすれば回避できますでしょうか?
>>636 すみません。語弊がありました。
エラーが返ってくるのではなく、
Followをクリックしても表示が切り替わらない(つまり、何も動かない。変化しない)というのが正しいです。
638 :
nobodyさん:2012/12/06(木) 21:01:18.32 ID:11RbrkAb
よく見てないけど、コントローラーのインスタンス変数(@f)にすれば
ビューにコピーされるので使えるよ。
>>638 ありがとうございます。試してみます。
やり方としては上に書いたような方法で問題ないですよね?
640 :
nobodyさん:2012/12/07(金) 00:10:01.78 ID:8cSZfdva
>>637 Followクリックした時のサーバーのログとブラウザのログ見てみれば分かる
>>641 サーバーのログは見るようにしていますが
ブラウザのログってあるんですか???
>>638 さっそく試させていただきました。
>>631のコントローラーをf→@fに変更
>>632のjs.erbでrender f→render@fに変更
その結果、ブラウザ上でFollowを押してもUn-Followへは表示が切り替わらず
Followのまんまです。
もちろん、ページ更新は発生しません。
その直後にページ更新を手動でかけると表示がUn-Followになっています。
つまり、フラグの切り替えだけは裏で正常に行われているようです。
表示の切り替え部分だけがうまく反映されていないようです。
色々と調べてみたのですが、これというものが見つかりません。
(表示されてる内容をajaxの動きで変更するという事例があまり無いです。
空白のところにajaxの動きで何かを追加表示させる事例はたくさんありました)
もしくは
views/ajax/_follow.html.erb
と
views/ajax/_unfollow.html.erb
を用意しておいて
それぞれにボタンを含めた部分的なviewコードを書いておいて
それらに対になるように
views/ajax/set_follow.js.erb
views/ajax/set_unfollow.js.erb
のそれぞれから呼び出すようにしておくべきですか?
コントローラーから現在のfollowステータスに応じて、
どちらかのjs.erbを呼び出し
index.html.erbに表示してあげるといったかんじです。
こういった切り分けたやり方のほうが一般的でしょうか?
その分ファイルが増えるので、ややこしくなりますが。。
645 :
nobodyさん:2012/12/07(金) 03:56:24.82 ID:8cSZfdva
もしかして。。。ですが。。。
Ajax、JQuery(AssetPipeLine)って
Development modeでは動かなかったりしますか?。。。。
一日試行錯誤してacts_as_followerとかも
事例をコピペでそのまんま試しましたが、
やはりページ更新なしでボタンの表示が変わりませんでした。。
なので、もっと根本的なところに問題があるのかもしれません。
>>642 chrome や opera なら右クリして要素を検証ってやつだよ。
firefox は firebug とかいうやつ。
js にエラーがあるならそこのコンソールってとこに表示される。
>>644 view で @f の値で分岐すれば良いんじゃないかな。
set_follow.js.erb を
<% if @f %>
$("#follow_status").html("こんにちわ");
<% else %>
$("#follow_status").html("さようなら");
<% end %>
に変えたら変更されない?
>>648 おはようございます。
朝早くからレスありがとうございます。
そちらも試させていただきましたが反応なしです。
試しにJQueryのfadeOut(画像が徐々にフェードアウトしていく機能)
を直でshow.html.erbに記述して表示させましたが、
それすら動かない様子です。
どうやらJQuery自体がまともに読み込まれて動いていないのかもしれません。
現在Rails3.1にgemでjquery-railsやjquery-ui-railsを入れています。
色々と試してはいるのですが心当たりが見あたりません。
>>649 ブラウザでアクセスしてhtmlのソース見てjsへのリンクがあるか確認してみたら?
Railsとか以前の問題だわw
follow_user_pathってなに
俺もRails3でAjax使おうと思って最初はまった素人なんだが
jquery_ujs.jsを読んでAjaxの動作を把握するのが一番だと思うわ
これアドバイスしてる奴は誰もソースちゃんと読んでないだろ(俺含め
653 :
あ:2012/12/07(金) 12:20:23.99 ID:???
654 :
nobodyさん:2012/12/07(金) 17:55:34.73 ID:nbhQU3dc
kaminariを使ってるんですけど、最後のページを取得するってできますか?
list = Item.order("id DESC").page(params[:page])
list.reverse!
で一応最後から順に取得できますが、ページ数が1となってしまいます
ページ数がlastから始まるようにすることっできますか?
656 :
nobodyさん:2012/12/08(土) 05:18:46.92 ID:SvWzDcWm
オススメのブログgemってありますか?
一般的なブログみたいに
右にArchiveってメニューを設けて
そこには
2012年11月(3)
2012年10月(14)
2012年9月(30)
みたいなリンクを表示させてて、11月をクリックしたら
testhoge.com/blog?archive=201211
に飛んで11月の3件が表示される
といった類の
この程度ならコードを1から自分で書くべきですか?
それとも何かgemはありますか?
ちなみにブログを作るとしたらURLは
その@
testhoge.com/user/1637/blog/new
↓投稿
testhoge.com/user/1637/blog/26448 がshow
そのA
testhoge.com/blog/new
↓投稿
testhoge.com/blog/26448
どちらのルーティングが一般的ですか?
659 :
nobodyさん:2012/12/09(日) 05:28:27.67 ID:36Xf50eu
660 :
nobodyさん:2012/12/09(日) 05:30:41.09 ID:36Xf50eu
>>660 一通り見ましたが
どれもそのブログ単体でアプリとして稼働するような大型ばかりでした。
私が探しているのは、アーカイブメニューと必要最低限の投稿関連機能のみを追求したものになります。
662 :
nobodyさん:2012/12/09(日) 10:26:37.33 ID:36Xf50eu
それくらいなら作れば?
紹介してもらったのから機能抜いてもいいし。
探したり、探してもらったり、書き込みを待つ手間もかからん。
rails勉強中です、質問させてください。
5000個くらいある商品を季節毎に入れ替えするために
csvファイルをアップロードしてcsvによりテーブルの中身を
総入れ替えするボタンを作りました。
ここでふと気になったのですが
テーブルの中身を一括で入れ替える方法は僕が実装した方法の他にも
シードデータを使った方法など様々な方法があると思いますが
稼働中のアプリケーションにおいてcsvファイルをつかったテーブルの更新
というのはrailsのアプリケーションとして一般的な方法なのでしょうか?
残念ながら入門書を読んでもwebをさがしても疑問は解決しませんでした。
皆さんはこの場合どういう方法を使っていますか?
別に問題無いと思う
今も昔もインポート・エクスポートは csv が無難だと思うよ
666 :
あ:2012/12/11(火) 02:20:37.65 ID:wspFP5Jy
質問です
VPS上にてサービスを公開予定しています
今後もし新機能の追加アップデートをしたい場合
どのような手法で行うのが一般的ですか?
考えているのは
ユーザーがサービスを利用していても
直接プログラム部分をいじったり
SSHからのコマンドで構築していくことを考えていますがエラーが出る度に
ユーザーからしたらいい迷惑ですよね?
それだと、とんでもない事故も起こりうるかもしれません
一番いいのはテスト環境を作ることなんでしょうが
railsの場合、1からの鯖構築になるので
vps鯖(centOS)に手を入れてきた今の状態と同一の環境を作るのは困難です。
railsアプリは基本アプリフォルダ以下すべてをそのままコピペして
rake db:migrate さえすれば動くべき!
動かない場合はbundle installさえすれば必ず動く!という認識でいいでしょうか?
668 :
あ:2012/12/11(火) 05:36:34.42 ID:wspFP5Jy
669 :
あ:2012/12/11(火) 05:44:56.38 ID:wspFP5Jy
670 :
あ:2012/12/11(火) 05:47:46.48 ID:wspFP5Jy
671 :
あ:2012/12/11(火) 06:16:02.85 ID:wspFP5Jy
672 :
あ:2012/12/11(火) 06:52:18.29 ID:wspFP5Jy
>>667 んなもんgemによっては追加の設定が必要なものもあるし、一概にこう、と言える
完璧な答えなんてないわな
動作環境構築手順をきっちりまとめておくというのはRailsに限らず、サーバ構築
の基本中の基本だ
文書としてまとめておいてもいいし、シェルスクリプトにしてもいいし、capstrano
みたいなのを使ってもよかろう
post = Post.find_by_topic(params[:id])
if post.comment_user.id == current_user.id
処理1
else
処理2
end
としたとき、仮にpostで該当するものがなかったとして完全にnilだった場合
nilエラーを回避して処理に進めるには、
どのように書くのがスマートですか?
if post
if post.comment_user.id == current_user.id
処理1
else
処理2
end
end
シンプルイズベスト
あと関係ない部分だけど、俺なら Post#comment_user_is? を作って、
if post.comment_user_is?(current_user)
とかするかも
コントローラでモデルのフィールドにアクセスするのは気持ち悪いから
質問も回答もひどいコードだ…
677 :
nobodyさん:2012/12/11(火) 21:56:21.73 ID:UJ9Con7b
677じゃないけど普通に
if post || post.owner_user?(current_user)
else
end
でいいんじゃないの
>>678 それだとpostがnilのときに処理2に入ってしまう
post が nil の時に処理2になるとは書いてないよな
682 :
nobodyさん:2012/12/11(火) 23:58:48.59 ID:9uZQlqYl
ここで颯爽と Object#try が登場
683 :
あ:2012/12/12(水) 00:22:15.66 ID:JEfJrekJ
>>681 ああ、そうなのか
やりたいことの日本語がまずあやふやだからnilの時処理2に飛ばしたいのかと思ったけどそうじゃないんだね
>>680だな
rails3で link_toだとajaxが使えないとかある??
こんなかんじなんだけど
<%= link_to 'bookmark', bookmark_rec_path(bookmark.id), :remote => true, :method => delete %>
686 :
nobodyさん:2012/12/13(木) 05:46:50.83 ID:8LaxKrHp
前回のif構文に便乗して質問させてください。
下記の各種条件に該当したとき、処理直後のそれぞれの redirect_toで動きが止まるようにするにはどうすればいいですか?
下記だとマルチレンダーになってしまいます。
def check
if 条件1
処理1
redirect_to hoge1_path
end
if 条件2
処理2
redirect_to hoge2_path
else
処理3
redirect_to hoge3_path
end
end
688 :
nobodyさん:2012/12/13(木) 20:53:24.66 ID:8cjTOb9L
and return
return って GoToの利用並に邪道じゃないの?
691 :
nobodyさん:2012/12/13(木) 22:40:40.36 ID:8cjTOb9L
メソッドの出口は1つなんていう規約の気の毒な会社もあるらしいね。
>>691 returnって現代、とくにrailsでは
あまり使うべきではないだろう
returnを使うそんな設計はクソ
>>691 あるある
原理主義もいいとこだわな
入力チェックの後ろにでっかい else がくっついてるというあほなメソッドが沢山
いつの時代だよw
普通に上みたいな状況ではreturn使うわ
return が邪道とか聞いたことないし
煽って回答を聞き出そうとしてるだけだろ。
こういうカスは相手せずにスルーしろ
流れをぶったぎってすまん
国際アプリを開発中。
タイムゾーンをconfig.aplication.rbでUTCをデフォにして
記録していこうと思うんだが、
config.time_zone = 'UTC'
config.active_record.default_timezone = :utc
異国間ユーザー毎に該当国の時間で表示してるのって
view側でどういうふうにするべき?
ユーザーテーブルに国テーブルを持たせておいて、
それを参照して毎回viewで表示するたびに計算させて表示??
googleを意識した超絶SEO対策を見つけた!
urlそのものの中に記事のタイトルをいれると強いな、これ
そして毎回パーマリンクとしてhtmlで出力すること
これがSEOに引っかけるための
一番の手段なんや
button_toって使うと勝手に同時にformを生成するよね。
どうしてもformを出力させずにボタンタグを使いたい場合って
ビューに直接
<button type="submit">Search</button> みたいに書き入れる?
皆はそういう時ってどうしてる?
初心者ですみません
save、またはupdateする際に
コントローラー上でparams[:hoge]の中身を全角英数→半角英数に変換する方法を教えてください。
>>701 ありがとうございます
もう1つ質問なのですが、
ユーザー ←→ 都道府県マスタ(47都道府県名)
一人のユーザの編集画面で都道府県を選ぶようなケースの場合は
user.rbに has_one :todofuken
todofuken.rbに belongs_to :user
が適正なアソシエーションでしょうか?
>>702 違う
都道府県 <-> リレーションテーブル <-> ユーザー
>>703 ありがとうございます
todofuken.rb→has_many :users
user.rb→belongs_to :todofuken
で期待通りの動きをしているようですが、
これはおかしいんですか?
>>704 ああ、ユーザーに選択式ってことだから複数チェックボックスかと思ったけど一ユーザー一都道府県ならそれであってる
>>705 ありがとうございます。
ユーザーのプロフィール編集画面で
各自の都道府県を選ぶようにしています
user modelにはtodofuken_idのカラムを用意しています。
設計方法として問題なさそうでしょうか?
708 :
nobodyさん:2012/12/15(土) 08:53:01.42 ID:ZQMsU3ZL
>>707 自分で調べろ
回答待ってるより早く見つかる
そういう機能あるから
Devise使ってメール認証させようとしてるんだけど
auに来たメールだけどうしても、
認識できないメール形式のため表示できません。
ってなる。
色々調べたところプレーンテキスト形式にしろとのことで views/devise/mailer
のファイル形式をhtml.erbからtext.erb
に変えたけど、やっぱり同じ。
この問題にぶち当たった人で解決できた人いますか?
どなたか教えてください
例えばmailの中身が
a→title,body
b→title,body
c→title,body
のように配列になっていたとしたら
cさん(最期)の部分だけを取り出すには
どうすればいいでしょうか?
わけわからん。
なんでメールの中身が配列なのさ
配列の最後取り出すなら、rubyの勉強しなよ
>>710 設定その他が分からんのでなんとも言えん
>>711 mail = [{:a=>[title,body]},{:b=>[title,body]},{:c=>[title,body]}]
こういうこと・・・なの?
>>714 そうなんです。
まさにおっしゃられてる通りです
>>715 マジでそうなのか・・・
>>712の言うようにrubyの勉強しろ
と言うかググレ「ruby 配列 最後」とかでググレ
railsってさ、参照先がnilだったときの分岐処理を想定して全箇所に分岐処理を入れなきゃだからメンドイよね。
なにか工夫できる点とかある?
知ってるような事言ってるけど、初心者なの丸わかり
実際にはそんな事にはならないし、対処法もよく知られてる
719 :
nobodyさん:2012/12/16(日) 03:31:11.14 ID:TfTpyI1z
ユーザー認証系のプラグインって、
Acts_as_authenticated(Rails1.xで主流だった)とか
Restful Authentication(Rails2.xで主流だった)とか
今はdeviseとか、はやり廃りがあるけど、
今使っている認証系プラグインが将来ディスコンになったりしたら、痛いよなー。
他の種類のプラグインと比べて、依存度が半端ないから、なかなか他に置き換えられないし。
やっぱり、こういうの使わずに自作するしかないのか?
あるいは、開発が止まったら自分で引き継いで新しいRailsに対応させるとか?
720 :
nobodyさん:2012/12/16(日) 03:46:28.84 ID:aOe33MNU
創価諸君よ!
田浦本部横須賀桜山支部の高橋裕之氏が年末ジャンボで6億円当たるようにまた女子部と結婚成就を5分でよいので高橋裕之氏に題目を送って行こうではありませんか!
>>717 if hoge.present?
て書くのが鉄板
present使うとhogeに
必ず何かの文字列が入っている場合のみ
っていう扱いになる
マジおすすめ
>>719 deviseとか最強じゃん
rails3.2以上にバージョンアップしていく必要なんてほとんどないだろ
723 :
nobodyさん:2012/12/16(日) 11:41:13.25 ID:8gHW4Yi/
omniauthって人気ないの?
例えばSNSを開発していたとします
荒らしが出てきたため、論理削除で該当Userを削除すると、
繋がっている色んな箇所においてレンダーする際にnilエラーが発生しますよね?
こういうのを防ぐには全ての箇所にif文でnilだったときの回避を想定して書いていくしかないんですか?
それともmodelの段階でdependancyにしておいて
連携しているものは全て同時に削除させるのですか?
後者だと、仮にコミュニティーのオーナーユーザーが会員抹消したときに
既存のコミュニティ自体も消えますよね?
これはこれで現実的ではない気もします。
>>724 消して良いものとそうでないものは、自分で書いてるんだから分かるでしょ。
連動で消す消さない選ぶだけだし。
エラーになりそうな箇所は、そうならないように設計すれば良いだけで。
エラーになっても例外補足したら良いし。
こういうのはRails関係ないけどな
>>719 自分で書けるが、面倒なのでdeviseとか使ってる。
devise使うかどうかはかなり長い間迷った。実際嫌いな人がたくさん居る。
もしRails4で違う認証システムが主流になっても
自作するよりは、今までの知識捨ててそれ覚えるほうが楽っていうのはかわらないんじゃないかな
そうならないなら自作すればいいし
devise以上のものは考えられない
お金払ってもいいレベル
gemの中で世界一需要あるだろ、あれ
deviseの黒魔術感と、何かあった時にあれ読まされるのが苦痛
その下のwardenまでなら許容できる
730 :
nobodyさん:2012/12/16(日) 16:04:54.26 ID:qaK7KzoY
全角英数を半角英数に置換するのはどうしてるん?
732 :
nobodyさん:2012/12/16(日) 19:50:11.84 ID:8gHW4Yi/
$ ruby -v -rnkf -e 'puts NKF.nkf("-Z4w", "アイウエオABCDE")'
ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-darwin12.2.1]
アイウエオABCDE
古いRubyのnkfだと-Z3までしかないかも。1.9系ならたぶんある。
>>732 ありがとう
これって普通のruby1.9.2が入ってたら
何もしなくてもいきなり使えるものですか?
734 :
nobodyさん:2012/12/16(日) 21:56:58.54 ID:TfTpyI1z
みんなご意見ありがとう。
>>727 趣味で作ってる分にはいいんだけど、
一度Rails3.2 & deviseで作ったWebサービスを公開して、
将来deviseがディスコンになった時がねー。
他の認証システムにユーザーデータをスムーズに移行させるのは結構めんどい気がする。
735 :
nobodyさん:2012/12/17(月) 00:09:31.08 ID:1jwbQomX
>>733 nkf 自体は標準ライブラリだよ。(-rnkf == require 'nkf')
1.9.2のならもう-Z4導入されてるんじゃないかなぁ。
手元にないしコンパイルしてまで確認する気にもならないので試せないけど。
736 :
nobodyさん:2012/12/17(月) 08:14:48.38 ID:wruMuh6O
Rails has_secure_password
737 :
nobodyさん:2012/12/17(月) 10:21:42.49 ID:dIcXqlm1
>>732 ありがとうございます
全角英数のみ→半角英数なので
params[:book][:author] = NKF.nkf("-m0Z1 -w", params[:book][:author])
↑のようにcontroller内に記述するのですが半角になりません。
どこを間違えているか分かりますか?
739 :
nobodyさん:2012/12/17(月) 20:31:07.77 ID:1jwbQomX
ログ見れ。
<%= debug(...) %> 使え。
質問させてください。
form_for
〜
f.submit
〜
end
Scaffoldで吐き出したときに
_form.html.erbは上記のような構成になっていると思います。
このなかにcaptchaも実装しており
更新/新規作成の時には画像認証もかけています。
このフォームに併せて
削除ボタンを加え、上記の画像認証もパスしなければ削除できないようにするためには
どういった構造設計にすればいいですか?
画像認証パスはbefore_filterにて間違っていたらFLASHエラーとredirect_to :back
にしています。
削除ボタンをsubmitにしない限り
画像認証がうまく作動しませんし、
submitを追記してもupdateアクションが呼び出されますよね。
長々となってしまいました。
よろしくお願いします。
方法は2つ
・JavaScriptでボタンクリック時にformのactionをすり替える
・submitボタンにname属性をつけておいて、コントローラでそのname属性を見て処理を分岐する
>>741 そもそも
form_for
f.submit name => 'action1'
f.submit name => 'action2'
end
みたいにsubmitが中に2つ存在とかありうることですか?
その際、コントローラーでは
このnameの中身はどのように取得するんですか?
>>742 一般的なんてのはない
システムの要件で決めれ
>>743 ふつーにありえる話
nameの中身なんてparamsダンプすりゃ分かる
やってみれ
>>744 ありがとうございます
最後に教えてください
@一般のlink_toやbutton_toはURLに対して引数を渡すイメージ
Aそれらに対し、form_forではオブジェクトの集合体の情報をまるまるコントローラーへ渡す感じ(引数がURLに出現することはない)
この認識で正しいですか?
なお、form_forの中ではlink_toのようにパスがかかれていません。
呼び出されるアクションはどうやって決まっているんですか?
呼び出すのがcreateの場合もあるし、updateの場合もあるわけですが
_form.html.erb内には記載がありません。。。
今回はさらにそれに対して呼び出し先をdeleteアクションにしてやらないといけないので。。
>>745 ActionView::Helpers::FormHelper#form_forのリファレンス読め
みんなはmixiでいうとこの掲示板のトピックスを作るとき
トピックスに今現在ついてるコメント数は表示の度にカウントで計算させて表示させてる?
それともコメントをcreateする度にカウントの集計をとって
それをトピックのテーブルにあらかじめ格納しておく?
後者のほうが表示が早そうだし
普通なのかな?
748 :
nobodyさん:2012/12/20(木) 01:50:56.98 ID:d/t2+tfj
>>747 負荷による
負荷と組みやすさのトレードオフで決めればいい
Railsとはちょっと離れる話だけど、カウンター系の実装は悩むよな
リアルタイム性が高いに越したことはない、の世界だし
みんなどうやってるんだろ
真面目にやるなら、memcachedとかに分散カウンタの仕組みを作るよ。
でも、カウンタを表示しなくてもなんとかなる作りにするのが流行りじゃないの?
752 :
nobodyさん:2012/12/21(金) 01:53:41.43 ID:pfZZNoyA
ActiveRecordに count_cache ってのもあったな。
753 :
nobodyさん:2012/12/21(金) 01:54:52.50 ID:pfZZNoyA
counter_cache だた
URL slugとか使ってる人います?
使ってる場合はroutingに:idに代わる引数を使っていますか?
それともfriendly_idみたいなgemを使っていますか?
755 :
nobodyさん:2012/12/22(土) 01:26:25.47 ID:E+md4EwU
to_param というメソッドがあってだな。
質問!
例えば
blogってモデルがあって
そこに投稿できたとします
本文にurlが含まれた場合は自動でハイパーリンク形式にして表示させようと思うんだけど
投稿時点で変換してやってカラムの中に<a href=.....
みたいにタグごと保存させるべき?
それとも表示させる時に変換して表示させるべき?
tag-itっていうインプットトークンを使ったことある人いる?
日本語での入力時に挙動おかしくない?
カーソルキーを押して初めて候補が表示される。
英語だとすぐに候補が表示されてるのに
これを直す方法を知ってる人がいたら
お願いします。
758 :
nobodyさん:2012/12/22(土) 06:18:47.83 ID:+yA+/kCp
各種ページからUser#showの特定ユーザーページに行き着けるとします
そのとき遷移してきたページを
階層ごとに追加してパンクズリストに追加していきたいのですが
これはURLパラメータで渡して追加していくしかないのでしょうか?
たとえば
URL: hoge.com/user/1/show?list=index
みたいに
前のページがindexだったと分かるようなかんじですね。
ただし、この場合ってSEO的には不利ですよね?なにかいい方法はないものでしょうか?
セッションに保持しようぜ
>>760 普通の設計だとセッションに保持ですか?
762 :
nobodyさん:2012/12/22(土) 16:25:17.72 ID:E+md4EwU
サイトのページ階層を表示したいの?
遷移履歴を表示したいの?
どっち?
>>762 サイトのページの階層です
crummyというgemを使っていますが
2階層目以降にいくときはgetのurlで
どこのコントローラーのアクションから来たかを渡しています。
サイトを開設して早1年。
会員が1万人に達しました。
サイトに機能追加をしたいんだが
サービス中だけど
そのまま手を入れてもいいもの?
それとも同じテスト環境を作って試すべき?
ちなみにテスト環境で試して本番に移植するときって
どんなかんじで差分だけを持って行くの?
>>764 そんなのRailsの話じゃないわな
一般的な話ならそれにふさわしいスレがあるだろう
766 :
あ:2012/12/24(月) 23:07:15.72 ID:T//Mfk22
767 :
nobodyさん:2012/12/24(月) 23:08:50.57 ID:T//Mfk22
railsで立ち上げたプロジェクトが起動に乗って急激にアクセス数が伸びました。
当然サーバーを増強しようとしたのだが、
頭が堅い(おかしい)上司が、なぜか遅いのはRailsのせいだと決め付けて、
サーバーに金を使う前に違うフレームワークを使って試せの一点張り。
どんなに丁寧に説明しても折れてくれない。
終いにはRubyが悪いからPHPにしろとか言い出した。
何を言っても聞く耳持たず。
こういうゴミ上司はどうやって処理すればいいんだろう。
違うフレームワークを使って試してみせりゃいいじゃん
別にそのこと自体は間違ったことじゃないし
770 :
nobodyさん:2012/12/24(月) 23:37:23.87 ID:T//Mfk22
>>769 うーん、そんな簡単に出来るもんですかね
ソース量も結構な量なので同じrubyのフレームワークだとしても1週間はかかりそうです。
簡単じゃないだろうけど、言い出したのは上司なんだから
1人月かかって成果がでなくても責任とってくれるんだろうし、付き合ってやればいいんじゃね
別フレームワーク使って一週間でいけるくらいの凄腕なら、自分達でチューニングできるだろうし、説得もできるはず
Javaにしろってんなら、TwitterがRails捨ててScalaにして大幅性能アップした事例もあるからわかるんだけど
LLでやってる以上はRubyでもPHPでもPythonでもそこまで差はでないよなあ
775 :
nobodyさん:2012/12/25(火) 04:08:27.33 ID:1GjI0Zxa
さくらVPSの一番安いやつ契約してるんだけど
一日当たりどのくらいのPVくらいまでなら耐えうるかな?
アクションメーラーとかもバリバリなんだけど。
パフォーマンスあげるのに手っ取り早いのは
CPUあげて
メモリあげまくって
Hdd→SSDかな?
777 :
nobodyさん:2012/12/25(火) 05:53:46.01 ID:Hj73KizL
Ruby2.0とRails4.0 (with Turbolinks)でどれだけ早くなるかだなー。
>>776 画像とか別鯖にしてるが90万超えると時々重くなる
>>779 一日90万PV?
すごいな
月間3000万PV近くいくの??
月に1000円のVPS使ってる??
みんなはいつも一つのアプリに対して何個くらいgemを追加してる?
今カウントしたら17個
しかも、まるまる全て使ってる
多すぎ?
784 :
nobodyさん:2012/12/28(金) 18:20:31.35 ID:Qev3IcZT
質問です。
コントローラーが複数あって全てのコントローラーにおいてbefore_filterで共通の関数(check_captcha)でチェックをかけています。
すべてのコントローラーの冒頭に
def check_captcha
処理
end
と、いちいち記述しているのですが
DRYに基づくには
application_controller.rb
の中にこれ一回だけ書いておくのが賢明ですか?
設計ミスだな
プログラムもサービスとしても
全部にcaptchaってユーザの利便性低過ぎ
>>786 もし、実装したとしたら
>>787のように
application_controllerに一度記載しておけばOK?
それともenvironment.rb?
788 :
nobodyさん:2012/12/29(土) 19:31:52.74 ID:Rz1m8OqI
>>878 FooController < ApplicationController という継承になってるよね?
foos_controller.rb
goos_controller.rb
はただscaffoldで作りました
CanCanとDeviseの組み合わせが便利すぎて死にたくなる
CakePHPにもこんな最強プラグインコンビってあるの??
791 :
nobodyさん:2012/12/30(日) 20:17:35.73 ID:B70eWZuq
>>790 cancanなんて初めて知った。
うわ情弱だおれw
今まで権限管理は手実装してたよorz
うーん、そのプラグイン軽く見てみたけど使いどころが不明すぎる。
というかプラグインにするまでも無いだろこんなん。
>>791 >>792 うむ、俺も今までは各種コントローラーごとに
def owner_check
if current_user.id != post.user_id
レコード編集・削除権限がない場合の処理
end
end
こんなメソッドをいちいち書いてbefore_filterでシコシコとedit や destroyに適用してた
しかし、CanCanを入れると
can, [:edit, :destroy], Post, {user_id = current_user.id}
を一行入れるだけで済むようになる
しかも、そこらへんの権限については
柔軟な対応可能が可能になり短い文をroutes.rbのように書き出すだけで事済むようになる。
20文字くらいを一行書くだけで、もはやコントローラーを触る必要がなくなった。しかもCanCanの他の機能のload_resourceは超便利!
みんな@post = Post.find(params[:id])
を各メソッドごとに書くか
before_filterで@postを取得してるだろ?これをする必要がなくなる
つまりコントローラー内から
@post = Post.find(params[:id])
の表記を全て削除できる
なんぞこれ!?ってくらい便利
CanCanって海外だとdeviseくらいに多く使われてるし何よりdeviseとの相性が良すぎる。なんせCanCanの作者は俺たちのお師匠ライアン様(Railscast)だからね
ちなみにviewへの表記も
if can?, update, @post を追記するだけで
Postモデルのupdateを実行できるかどうか判断できる
レコードオーナーや編集可能ユーザーの判定をいちいちシコシコと書く無駄な作業が激減して
見渡しの利くコードになる
全てにおいて作業効率が大幅アップする
それが世界で愛されるCanCan
githubでもお気に入りが4000越えてる
びっくりするぐらいどうでもいい機能だな・・・
と情弱が申しております
797 :
nobodyさん:2012/12/31(月) 02:11:19.05 ID:GaWJ1okA
>>793, 794
わざわざコードまで示してくれてありがとう。
cancan導入してみますw
>>797 うむ、頑張りたまえ
ここの連中ってほぼ全員が
ノウハウを共有したがらないから
ROM専ばかりだけど
君にはそうはならないでほしい
書き込みや質問、応答が活発なCakePHPスレと比べても
Railerって陰湿
hobo でも似たようなことできるよ。権限は model に記述。
付属の tablib ではフィールド毎に表示とかupdateとかの権限チェックしてくれるので安全 (その代わり遅い)
自宅サーバにほぼ自分専用Railsアプリが複数稼働していて、それぞれは独立しているのだが、
これを外から見ると一つのHTTPサーバーでそれぞれのパス毎に稼働しているように見せかけたいのだが、どうすれば良いだろうか?
802 :
nobodyさん:2012/12/31(月) 07:37:40.27 ID:zUgdNyrn
subdomain
Nginx使えば簡単だよ
804 :
nobodyさん:2012/12/31(月) 10:36:54.95 ID:kr/LjjrF
Apache+PassengerだとDocumentRootからアプリのpublicにリンクを張ってRailseBaseURIを使えばOKだと思う。
ここで情報共有する必要が特にないからなぁ…。
ろくに勉強してない初心者が矢継ぎ早に聞くだけ。
質問に答えても謝意もない事が多いし
Rails日本語の情報少ないとか言うが、やってる人は大体英語で情報追っかけてる。
それでも日本語でって人は、qiitaとかて良いんじゃね?
qiitaってw
冴えないベンチャーの典型的な失敗サービスだよな。
しかし、日本語で他に良さそうなとこもあまり無いな
はてなの人力検索も死んでるし
なんかメディア系がQAサイトやってたような気もするが、名前も思い出せないくらい
808 :
nobodyさん:2012/12/31(月) 12:03:33.74 ID:6Xc2fnif
>>807 技術系特化のQ&Aは英語読めない人の方が少ないから海外版の色んなサービスで事が済んでる気がする。
レイルズってまともに環境整うまでが鬼門すぎて笑える。
heroku使いたくても、
まともにpg gemが入れられない。
それがレイルズ。
きゃんきゃんバニー?
heroku で pg gem入らなかったこと無いけど…。
Gemfileで指定も特にいらんし
813 :
nobodyさん:2012/12/31(月) 20:58:40.46 ID:lpKmbc/O
select_date についての質問です
コントローラ
year = Time.now.year
month = Time.now.month
day = Time.now.day
@search_date = Date::new(year.to_i, month.to_i, day.to_i)
ビュー
<p>日にち <%= select_date(@search_date, :prefix=>"a_date", :use_month_numbers => true, :start_year => Date.today.year) %></p>
としており、params[:a_date]で取得できるところまではわかったのですが、
これをsqlite3で検索すると
"a_date"=>{"year"=>"2012",
"month"=>"12",
"day"=>"31"},
このようになってしまい、エラーになります。select_dateで取得した値をsqlに問い合わせるにはどのようにしたらいいのでしょうか?
814 :
nobodyさん:2012/12/31(月) 21:13:21.76 ID:kr/LjjrF
params{:a_date] は単なるHash(WithIndifferentAccess)なので、
検索条件の?(プレースホルダ)に入れたいならそれらからDate
インスタンスを作ってください。
>>812 すみません。 うちのローカル環境に何故か入らないって事です。
ネットに書いてあることを色々試しましたが無理でしたよ。
おおかたはhomebrewで入れろってあったけど、
なぜかhomebrewをインストールしようとしても
brew doctorとかbrewコマンドすると
変なエラーが出てきて上手くインストールできません。
変なエラーとか言ってるようじゃ誰も助けられんわ。
どういうエラー出てるか書かんと。
そもそも rails以前の問題のような気もする。
deviseについて教えてください。
サーバーにあげるとサインアップの際の確認メールとかがしっかり送られるのに
ローカル(MacOS10.6.8)だと送られてこない。
なぜでしょうか?
heroku 使うメリットってなんだ?
ActionMailerはデフォで使えないし
ゴリ押ししてくるSendgridとかは段階的に金とるし、
MySQLが使えないしPHPMyAdminも使えない
VPSに自分で構築していったほうが安上がりだし
柔軟すぎる。
herokuを使うメリットが掴めない
820 :
nobodyさん:2013/01/01(火) 09:11:06.87 ID:VXFm6Oj+
822 :
nobodyさん:2013/01/01(火) 10:44:47.27 ID:ZJ6KO/zP
brewで普通にいれたらええやん
824 :
nobodyさん:2013/01/01(火) 14:08:56.01 ID:VXFm6Oj+
>>821 スケールっつても頻繁に拡張するわけではないし
その段階的な拡張にかかるコスパ悪すぎでしょ。
VPSでも、お引っ越しなんて
同じ環境を構築して
アプリをそのままコピペで移動。
データベースをインポート
これだけで済むじゃん
それでいてアクションメーラー使い放題
HDDやメモリもそこそこあるのに格安
データベースなんでも使える
PHPMyAdminも使える
FTP管理やメールサーバーもたてられる
どう考えてもVPSがいい
スケール提供サービスって
段階的に金をとりたいビジネスモデルってだけで
メリットなし
メール送信できないのが一番キツイ
できてもgmailで一日500通まで
sendgridで一日200通まで
980円毎月払えば4万通までとかw
980円払えば、さくらのVPSをまるまる借りられるっつーのw
>>820 いつも思うんだが
これって前レスの特定文字列をgoogleで検索して投稿してるスクリプトだよな
役に立たんからいい加減やめろ
>>825に付随
vpsなら自宅からMySQLサーバーに
ODBCで繋いで簡易にデータベースの中身をローカルで管理できる
herokuじゃ一生無理だろ?
828 :
nobodyさん:2013/01/01(火) 17:11:56.25 ID:vRRvUX7X
お前がそう思うんなら(以下略
830 :
nobodyさん:2013/01/02(水) 08:13:40.38 ID:+aNQQTYw
herokuの話が出てるので口を挟んでみる。
webサービス立ち上げのコンサルしてるけど、個人的にはherokuでスタートアップするのは全く勧めてないな。
herokuのメリットはサーバー構築の初期コストだけ。使い捨て前提のサービスなら選択肢になりえるかも。
デプロイ遅いし、あんな中途半端な開発環境はとても勧められない。
で、どこを勧めてんの?
833 :
あ:2013/01/03(木) 08:24:55.11 ID:PIbzoZ5E
835 :
831:2013/01/03(木) 15:00:00.63 ID:???
さくらインターネットで適切なプランを探すことが多いよ。ありきたりだけど。
最近は顧客がクラウドクラウド煩いので、国内クラウドを勧めることもある。
AmazonEC2は高いしパフォ最悪だから対象外です。
さくらのクラウドはもう信頼していいのかなー?迷いどころ
836 :
nobodyさん:2013/01/03(木) 16:05:24.51 ID:W8i8f2ME
heroku使ってるけど、最小構成なら無料なのがメリットかな。
テスト用にいくらでも作れるのが便利。
逆に本サービスに使ってるけど、こういうところがダメだ。
みたいな意見あったら、どこがダメかもっと具体的に聞きたいな。
しかしゲーム系は、ほぼおしなべてEC2
838 :
nobodyさん:2013/01/04(金) 01:56:49.93 ID:iGuqiY6U
さくらのクラウドにロードバランサが欲しい
839 :
nobodyさん:2013/01/04(金) 02:09:35.50 ID:iGuqiY6U
841 :
nobodyさん:2013/01/04(金) 08:15:26.91 ID:iGuqiY6U
>>825 InfoQ: Herokuは、Postgres as a Standalone Serviceをリリースした
致命的な障害に直面してもデータの損失を避けるように設計された一連の技術であるContinuous Protection(継続的な保護)によって、運用メトリックのようなものを実現している。
データやスキーマの変更は、PostgreSQLのWAL (write-ahead-log)に書かれます。
リカバリ不能なハードウェア障害のときは、状態がわかっている最後から数秒以内にデータベースを復元するために、これらのログを自動的に'replayed' にする。
Heroku Postgresは、書かれたすべての変更を複数の、地理的に分散した場所にコピーも作成する。
これらのコピーは、常に一貫性と損傷がないことをチェックしている。
http://www.infoq.com/jp/news/2011/12/heroku-postgres2
>>842 ImageMagickつかえないやん
PHPつかえないやん
終わってる
さらばPhotoshop。Cloudinaryはクラウドで画像を変換する
フルサイズの画像を高さ100ピクセルにしたいなら、これ!
http://res.cloudinary.com/demo/image/upload/h_100,c_thumb/butterfly.jpg 女性の顔を90×90のサムネイルにするなら。Cloudinaryは顔認識もするので問題なし。
http://res.cloudinary.com/demo/image/upload/w_90,h_90,c_thumb,g_face/butterfly.jpg 角を丸くしたければ。
http://res.cloudinary.com/demo/image/upload/w_90,h_90,c_thumb,g_face,r_20/butterfly.jpg 円形に切り取るなら。
http://res.cloudinary.com/demo/image/upload/w_90,h_90,c_thumb,g_face,r_max/butterfly.jpg http://jp.techcrunch.com/archives/20120531goodbye-photoshop-hello-cloudinary/
847 :
nobodyさん:2013/01/04(金) 11:33:57.30 ID:Hp7uHc/W
>>844 cloudinaryで
phpなんて要らない
Uploading Files to S3 in Ruby with Paperclip | Heroku Dev Center
ImageMagick for resizing images. Mac users install with Homebrew brew install imagemagick.
Windows users can use the Windows binary release.
https://devcenter.heroku.com/articles/paperclip-s3
>>847 phpmyAdminみたいな便利なものもいらないんだ?w
852 :
nobodyさん:2013/01/04(金) 12:13:31.25 ID:iGuqiY6U
853 :
nobodyさん:2013/01/04(金) 13:50:22.64 ID:SHFcw3cW
herokuも地道に進化しているわけか。
ちょっと
>>825の意見聞いて さくらVPSになびきかけてたけど、
もう少しherokuで様子見してみよう。
ImageMagickの使えないheroku wwwwww
Uploading Files to S3 in Ruby with Paperclip | Heroku Dev Center
ImageMagick for resizing images. Mac users install with Homebrew brew install imagemagick.
Windows users can use the Windows binary release.
https://devcenter.heroku.com/articles/paperclip-s3
856 :
nobodyさん:2013/01/04(金) 17:57:27.99 ID:SHFcw3cW
>>852 herokuでも動くように魔改造したphpPgAdminか。いいね。
でも、Shared DB専用みたいね。
Heroku PostgresのDevプランに対応してはいないのか。7ヶ月前で更新が止まっているのが惜しい……。
857 :
nobodyさん:2013/01/04(金) 20:12:56.70 ID:RrZQDH/f
あけましておめでとう。
今年も社畜よろしく
859 :
nobodyさん:2013/01/05(土) 20:06:07.73 ID:IZ6ezt4+
CONTROLLER=users rake routes
こんなやりかたしらんかった
すいません初心者ですが質問です。
A:ユーザーデータ
B:AとDの関連性1を定義する中間テーブル
C:AとDの関連性2を定義する中間テーブル
D:共通のマスタデータ
A has_many Bs
A has_many Cs
A has_many Ds through Bs
A has_many Ds through Cs
D has_many Bs
D has_many Cs
D has_many As through Bs
D has_many As through Cs
B belongs to A
B belongs to D
C belongs to A
C belongs to D
上記のようなアソシエーションを作成し、
Aの編集画面で関連性1、関連性2に対してそれぞれ別々にマスタCのデータの
チェックボックスから複数選択して、A,B,Cテーブルを更新するということをしたいのですが、
ビュー、コントローラでどのように書いたらうまくできるでしょうか。
中間テーブルが1つの場合はネットで調べてできるようになったのですが、
2つ以上になった場合に、どちらの中間テーブルに対する処理であるかを
指定するやり方はありますか。
>>854 え、使えてるよ?
自分で調べたり試したりするの面倒だから煽って答えさせるパターンなのかなあ?
863 :
nobodyさん:2013/01/06(日) 15:44:45.96 ID:HlKlHWZ7
>>860 polymorphic association の出番? と適当なことを抜かしてみる
guides.rubyonrails.org/association_basics.html#polymorphic-associations
>>862 いつもdisってる1人はそんな感じだね、スルーでよさげ
皆さんはdevelopmentモードから
productionに移行するときは
マイグレーションのファイルは
テーブルごとに1つづつにまとめたマイグレーションファイルのみに編集し直しますか?
あとで色々とカラムを追加していった結果、
テーブル内のカラム順もグチャグチャですし
マイグレーションファイル自体も多くなりすぎてて訳が分からない状態です。
テーブルごとにファイルを編集し直すのが賢明ですか?
は?
えーと、この機能のためにマイグレーションファイルでカラムを追加して…と
↓
あ、このカラムも必要だ!マイグレーションファイルを追加してさらにカラムを追加して…
とかやってんじゃね?
やってるやってる。いま運用してるシステムがまさにそんな感じ。
>>867 まさにそれです。
>>868 最終的にテーブルごとにまとめた形にしてますか?
そして、ちょろちょろとカラム追加していったマイグレーションファイルは削除?
本番稼働前のカラム変更は、migrationファイルを直接編集(該当テーブル作り直すなり、DBごと作り直すなり)。
本番が稼働したら、migrationファイル追加。
スキーマが本番と違うとかでない限り、developmentとproduction で migrationを変えたりはしない。
>>870 本番稼働前に変更や追加あったら
該当テーブルのマイグレーションファイルにカラムを追加して
rake db:rollback
↓
rake db:migrateで変更点を適用させるってこと?
rollback はあまり使ったことないが、そういう感じ
本番までは add_column とか change_column の migration ファイルは作らない。
あと、もう既に動いてるサービスでもない限り、 1テーブル 1 migration ファイルにする。
873 :
nobodyさん:2013/01/08(火) 07:26:53.31 ID:TzgSUDV/
874 :
nobodyさん:2013/01/08(火) 08:28:04.74 ID:TzgSUDV/
Controller内でrenderを変数に格納したいのですがエラーが出て上手く行きません
やりたいこと、とあるサイトにgetで記事更新を通知
body = render_to_string(partial: "entry/body", locals: {entry: @entry})
bodyは自作タグのようなものを使っていてそれをHTMLに変換しているので(helperや、helper内でrenderをしまくっています)、controller内だけで完結するのは難しいです
従って、"entry/_body" では、entry_convert_html(entry.body)"をしているだけです
open("/rss.xml?title=#{ERB:Util.url_encode @entry.title}&body=#{ERB:Util.url_encode body}")
を行うと
undefined method unpack fo nil class
が発生してしまいます
試しに
body + ":hoge"
を行ったらそれでも同じエラーが発生しました。何か対処法はありませんか?
自己解決です
hoge = render_to_string("entry/body")
ERB:Util.url_encord hoge
#=> undefined method unpack for nil class
hoge = render_to_string("entry/body")
hoge = (hoge + "\t").sub(/(\t)$/, "")
ERB:Util.url_encord hoge
これで通りました。単純にhoge.to_sなどでは通りませんでした
何をしたいのか、何を聞きたいのか全く・・・分からない・・・
878 :
nobodyさん:2013/01/08(火) 10:35:33.37 ID:SO+rvxME
>>874 チューニングするしないで70倍もスピードが変わるってのもすごいな。
>>877 知能レベルが低いんじゃない
読めばわかるじゃん
>>875-876 .to_sで通らないってことは内部で違う型保持してんのかね
バグっぽいし後でソース追ってみるか
>>879 読む気が失せるような質問の仕方はやめろって言いたいんだよ言わせんな恥ずかしい
「やりたいこと、とあるサイトにgetで記事更新を通知 」なんて余計な情報書かずに
何が本当に知りたいのか、何が本当に分からないのかをもっと考えろってこと
まあ普通そうやって考えたら質問する前に自分でどこが問題か気づくんだけどなー
どうでもいいけど
>「やりたいこと、とあるサイトにgetで記事更新を通知 」なんて余計な情報書かずに
この点だけは反対だわ
やりたいこと書かずに、よくわからないピンポイントなところだけ質問してきて
根掘り葉掘り聞いたらもっといい方法がいくらでもあった
なんてざら
何がやりたいから、自分でどうしたか、どのような問題が発生したか
これを書いてくれるのが一番いい
そういう意味ではそいつの質問は全部書いてるしお前のレスよりはよっぽどまともだな
質問が日本語としておかしいだろ…
何やりたいのか分からんわ
もう相手するな。馬鹿はスルーでいい
そもそも質問して答えを頂く立場のくせに教えを請う努力が足りない
>>881 やりたいことを書くのが悪いとは言ってないですよく読んでください
余計なことを書くと分かりづらくなるから要点だけまとめたほうが良いよ
まとめるてると自分で問題点が分かって質問する前に解決することも多々あるよ
って言うことを言いたかっただけです言い方が悪かったのは認める
>>884 本人が余分な事だと思って削ってることが重要なことなんて多々あるだろ……
お前社会に出たことないのか?アホすぎて相手するのもつかれるわ
お前みたいな糞が自分ルール振りかざすせいでレベルの低い質問者が増えるんだよ
黙ってろしゃべんな
>>885 つまり全ソース貼り付けて分かりませんと質問するのが一番良いのですね
社会に出たことがないので知りませんでした今後の参考にしますありがとうございました
>>885 いちいちアホだの糞だの人格攻撃入れないとレスもできない人に全うな社会経験があるとは思えません。
バイトで社会人気取りの学生さんですか?自分の知能指数を把握するまでレスしないでください。
頭の悪さがうつってしまいそうです。
やれやれ…
低レベルな争いしてんなよ底辺共
>>886-887 顔真っ赤にして連投してんじゃねーよくっせえなあ
反論に詰まった負け犬の末路、自演連投認定いただきました
ここまで全部俺の自演
>>890 基地外にいつまでも粘着してるお前も同レベルだって言ってんだよ
誰彼構わず噛み付くな煽り耐性無いなら2ch使うなゆとり
893 :
nobodyさん:2013/01/08(火) 22:21:04.33 ID:SO+rvxME
おいおい、みんな。ただスルーすればすむことじゃないか。
894 :
nobodyさん:2013/01/08(火) 22:22:18.09 ID:d08p9L/F
っていうか、質問者はさっさと自己解決して帰ったのに
なんで関係ないやつが質問者に対する文句に対して発狂しちゃってるの
会社で嫌なことでもあったんだろ
煽りとかじゃなくて本当に気になるんだが、
要点まとめて質問するのと、出せる情報できるだけ出して質問するのはどっちが良いんだ?
自分が何をしたいのかわかってるならまとめたほうがいい
何かのエラーみたいなよくわからんものなら全部出したほうがいい
初心者に要点まとめさせても見当違いな事書くことが多い
コンパイラーの吐き出すエラー見ても行番号が全然違うとかよくあるし
そういう意味では初心者なら全部出すほうがいい
結構微妙な問題だね。
>>899 でも、いきなり全ソースとか数十行のコンパイルエラー貼られてもな。
最初に何について困っているか書いてもらって、
フィードバックもらってから詳しい情報出す方がいいと思うが…。
901 :
897:2013/01/08(火) 22:38:38.40 ID:???
>>898 確かにエラーメッセージがあるなら全部出したほうが良いか・・・ありがと!
>>899 「初心者なら」ってのは自分でどう判断して良いものやらなかなか難しいな・・・ありがと!
初心者なので〜ってやたらめったら全部出されたら俺なら見ないでスルーしちゃいそうだわw
流れぶった切ってすみません。
てっとり早くアプリ速度をあげるには
・鯖自体のスペックをあげる
・apache+passengerではなくnginx+unicorrnを使う
・カウンターキャッシュを使う
・blobは使わず、画像などは画像データを直接保存してpathだけを保持
ほかにも何かありますか?
有効性のあるもので
memcacheとか?
プロファイリングしろ
一見面倒だが、長い目でみれば結局その方が早く解決できるぞ
904 :
あ:2013/01/08(火) 23:24:53.94 ID:???
なんだこれ。質問してる奴が何であんなに偉そうなんだろう。
低脳は低脳なりに立場を自覚しろよ。
自覚したら質問続けていいぞ。
907 :
nobodyさん:2013/01/09(水) 10:14:19.05 ID:B68jwcU5
908 :
nobodyさん:2013/01/09(水) 14:31:32.33 ID:bE/E7vCT
>>905 たかが解答者風情が質問する方に文句言う資格なんざねぇよw
黙って答えろ
>>903 プロファイリングして
具体的構造やプログラミング手法をどう変えればいいとか分かりますか?
910 :
nobodyさん:2013/01/09(水) 19:27:43.99 ID:B68jwcU5
みんなは検索とか表示の時のリクエストパラメータはどうしてる?
hoge.com/posts?q=プログラミング&sort=new
みたいなの
↓みたいにしたほうがRESTだし、SEO的には有利?
それとも上記のやり方のほうが重複コンテンツ扱いされないから
googleさんの階層解析には優しいし有利?
hoge.com/posts/プログラミング/new
915 :
あ:2013/01/09(水) 23:25:35.04 ID:???
916 :
nobodyさん:2013/01/09(水) 23:43:43.12 ID:qifpNPDB
>>914 重複コンテンツ扱いが気になるならcanonical linkでも明示すればよいんじゃない?
あと、上のやり方でもRESTたりえる。
918 :
nobodyさん:2013/01/10(木) 08:25:21.58 ID:HD/4XrFx
RESTはファイルパスのように見えるものをGETすることじゃないから。
919 :
nobodyさん:2013/01/10(木) 12:51:10.79 ID:Lf5p4yUU
developmentモードって遅くって当たり前ですか?
最近異様に重く感じます
とくにbootstrapを使い始めてから
最近、脆弱性のことを言われてるけど
3.2.6って大丈夫なのかな?
922 :
nobodyさん:2013/01/10(木) 20:33:41.77 ID:Lf5p4yUU
どうやってやんの?
>>924 を参考に3.2.11にアップグレードした。
わりと苦労せずにできたよ。
Herokuのサーバーにも反映して無事に動いた。
まぁ、俺のどマイナーWebサービスに脆弱性があっても誰も狙わないだろうけどな '`,、'`,、('∀`) '`,、'`,、
gem update ***
3.2.6なんだが3.2.11にgemが対応してなかったらキツイな
20個くらい使ってる
どのくらいのPVやUVくらいから
memcachedは実装すべきですか?
>>927 そんなに大きな仕様差はないと思うんだけど、
既存と同じバージョンのgemじゃダメなの?
930 :
nobodyさん:2013/01/12(土) 00:24:21.93 ID:onuP/l38
931 :
nobodyさん:2013/01/12(土) 22:40:47.21 ID:onuP/l38
jpmobileで強制的にスマートフォンサイトを表示させることって出来ますか?
逆はenv["rack.jpmobile'] = nilで出来たのですが
933 :
nobodyさん:2013/01/13(日) 15:26:06.55 ID:9EpDt3Wf
>>923 分からない人が、Rails 使っているコト自体が脆弱性だな(笑
935 :
nobodyさん:2013/01/14(月) 04:12:18.90 ID:b6dR0Wdw
Ruby1.9 + rails3.2.8にしてから
ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT)
というエラーがやたらと発生して解決できません
何か解決方法を知っている方はいらっしゃいませんか?
どっちかというとRubyの質問やね
1.9系から、ファイルのエンコード情報をマジックコメントとしてファイル冒頭に書かないと
ASCII文字以外が含まれる場合にそのエラーが出る
# coding: utf-8
みたいな感じのを1行目に書けばいい。
938 :
あ:2013/01/15(火) 20:20:25.82 ID:???
magic-commenter
939 :
nobodyさん:2013/01/15(火) 20:50:13.94 ID:VabCNrhV
940 :
nobodyさん:2013/01/15(火) 21:08:22.05 ID:vaCWK5th
そして2月リリース予定のRuby 2.0から、
magic commentがない場合は
us-asciiではなくutf-8とみなすようになる。
>>860 これで駄目?
model A
has_many :bs
has_many :bds, :through => :bs, :source => :d
has_many :cs
has_many :cds, :through => :cs, :source => :d
view
.field
= f.fields_for :bds do |bd|
= bd.check_box :d_no_column
.field
= f.fields_for :cds do |cd|
= cd.check_box :d_no_column
>>932 env["rack.jpmobile"] = Jpmobile::Mobile::SmartPhone.new(env, request)
>>937 返答ありがとうございます。
マジックコメントは勿論各コントローラーで記載しています
hamlを利用していて
%meta{type: :keyword, value: "#{@keyword}"}
みたいなmetaを設定しているところで発生します。@keyword.encode("UTF8") (うろ覚えです)等もやってみましたが改善しないみたいです
自分の環境ではどれだけやっても発生しないのですがエラーログに1万アクセスに1回くらい発生しているので修正したいです
1万アクセスに1回の割合ってのがくせ者だね。
945 :
nobodyさん:2013/01/16(水) 22:44:39.66 ID:hy7GC76d
あまりにも初歩的な質問で申し訳ないんですが
ApplicationControllerに記載したアクションのルーティングは
routes.rbにどのように記載すればよいのですか?
resources :application do
get 'search',on: :collection
end
と記載してみましたがうまくいきませんでした。
947 :
あ:2013/01/17(木) 11:48:12.57 ID:???
こないだ出たxmlの脆弱性って、具体的にどんな場合やばいの?
ログインさせて使わせるサイトだと大丈夫?
949 :
あ:2013/01/17(木) 20:41:27.81 ID:???
950 :
nobodyさん:2013/01/17(木) 21:19:39.58 ID:sdpLMGF2
>>946 resoucesじゃなく、単に get 'url pattern' to: 'application#myaction'
952 :
あ:2013/01/18(金) 01:05:47.05 ID:g1rcdtnm
953 :
nobodyさん:2013/01/18(金) 01:07:52.53 ID:g1rcdtnm
viewの中でbegin rescue出来ますか?
post可能なのは全部ngなわけ?
つーことはログイン画面も基本あぶないってこと?
やべーな。
957 :
あ:2013/01/20(日) 01:13:53.13 ID:???
んで
やべー
やばい
ありがとよ
rails3.2をruby1.9で作ったプロジェクトがあるんだけどruby2.0にしても動きます?
tdd
962 :
nobodyさん:2013/01/20(日) 22:47:23.62 ID:P+bO0zp9
システム設計のことで質問させてください。
たとえばブログサイトを作ったとします
・ユーザー(User)
・記事(Post)
・コメント(Comment)
の3つのモデルがあったとします。
ユーザーの退会時、
:dependant => destroy でユーザーが作成してきた関連レコードも一緒に一斉削除するのが通常かと思います。
しかし、私のサイトではユーザーが他のユーザーの記事を
お気に入りに登録していたりするため、むやみに消せない事情があります。
退会する会員のUserレコードだけを削除した場合、
退会ユーザーのリンク(user_id)が以前投稿したレコードはそのまま残ります。
それらのPostやCommentのレコードは存在し続けても、
作成者が削除されていてuser_idの類にリンクできなくなっているため
nilエラーがどこそこで頻発します。
そこでPostやCommentの作成者名をifか何かで条件から待避させ「退会ユーザー」と統一して表示させ
nilエラーを避けようかと思っています。
みなさんは、こういった処理や
テーブル間の依存関係はどのように設計していますか?
今回の私のようなケースだとどのように削除ルールを作りますか?
会員退会、そのブログの管理は以降は
私が見ますといったかんじです。
965 :
あ:2013/01/23(水) 02:11:24.92 ID:???
967 :
nobodyさん:2013/01/23(水) 08:45:57.77 ID:yb79r+q4
退会した各ユーザーに「退会済み」という属性を持たせるのが普通?
あとは、退会したユーザーの記事を「退会したユーザー」という特殊な
ユーザー(ログインなどは出来ない)の所有に変更するとか。
実装云々の前に、サイトのポリシーにもよる。
退会してもデータが残って表示される事に、ユーザは同意してるのかどうか。
実装は、#try で
フォームから配列を渡す方法ってありませんか?
a.each do |i|
hidden_field_tag ("key1[]",a[0])
hidden_field_tag ("key2[]",a[1])
end
という方法はあるみたいですがスマートじゃないですよね、、、
しかも
a = [["b","1"],["c",2]]
みたいな2次元配列になると更に複雑ですし。
971 :
nobodyさん:2013/01/25(金) 12:21:03.24 ID:Ecor/dDT
どなたかお助けください!
http://yorunocafe.blogspot.jp/2011/09/i18ngenerators.html の記事と同じ症状が起きています。
(rails-i18nを使用しようとするとja.ymlの取得がうまくいかない)
記事にあったように、 ja.yml を公式から落としてきて
該当railsプロジェクトのconfig/locales/ja.yml に設置してから
rails g i18n_locale ja を叩いても
fetching ja.yml from rails-i18n repository...
could not find ja.yml on rails-i18n repository
となってしまいます。どなたか解決方法を分かる方はいらっしゃいますか?
>>972です
解決いたしました
しかしながら、rails g i18n jaで生成された
translated_jaに各種テーブルのカラムを入れても反映されません。
なぜでしょうか?
application.rb の i18n.default_locale は設定したの?
Postモデルにおいてフラグメントキャッシュを使用したいと思っています。
しかし、ページネーションを使っている状況でキャッシュを使用すると
2ページ目以降も全て同じ内容でキャッシュされてしまいます。
(コントローラーの1アクションにつき1つのキャッシュをしている?)
こういった場合はどのように対処すればいいでしょうか?
ちなみにページネーションの
page=6 とかだけではなく
query=apple や
country=57 などの複数のパラメータも使用しています。
URLで hoge.com/posts?page=7&query=apple&ciuntry=57
のようになります。
さくらVPSでSSDの鯖が出てるようだけど
1ページあたりの表示のためにSQLリクエストが多い場合だと
SSD 2GBメモリ>>>>>>>>>>HDD 4GBメモリ?
キーをsuffixで指定するらしい。
cache suffix: params
でもこれだと posts?neko=nya とかが渡されると新たにキャッシュが作成されてしまうから
cache suffix: params.select{ |key| %w(controller action page query country).include?(key) }
とかする必要があるみたいだ。
>>977 ありがとうございます。
その記述だとcountryのパラムに何か値が入っていると
それにキーをつけてキャッシュしていってくれるのかな?
しかし、1ページ目と2ページ目以降の全てが同じ内容で表示されちゃいますよね?
country=47と且つpage=7
とかとの組み合わせで何とかキャッシュできないかな?
上の例で組み合わせになってるはず。
キャッシュのキーがログに表示されるから確認してみて。
>>979 ありがとうございます!
たとえばパラメータが
params[:page] => ページネーション用のため必要に応じて発生
params[:mode]
params[:country]
params[:query]
と複数あるのですが、
(params[:query].nil? || params[:query] = "") && params[:country].nil?
の時のみキャッシュしていくっていう条件付きで設定出来ますか?
そうしないと 検索される度(query!="")にキャッシュされてしまい
キャッシュが無限大に増殖してしまいますよね。
キャッシュの部分を if で囲めば良いのでは
- if params[:query].blank? && params[:country].blank?
- cache suffix: params[:page] do
ページ別にキャッシュされる
- else
キャッシュされない
>>981 さっそく、ありがとうございます
コントローラー内
if params[:query].blank? && params[:country].blank?
cache suffix: params[:page] do
キャッシュする
else
キャッシュしない
end
↓はどこへ?上の構文より上に記述しとけばokですか?
cache suffix: params.select{ |key| %w(post index page mode).include?(key) }
色々と検索しましたが
やり方が皆さん違うようですね
Rails.cache.fetch(:controller => 'posts', :action => 'index', action_suffix => @key)
が、@keyに結果が既に格納されていたら取り出す。なければ、作って格納する。
だと思っていたのですが
これと絡めるのでしょうか?
フラグメントキャッシュはビューに書く。
<% if params[:query].blank? && params[:country].blank? %>
<% cache suffix: params[:page] do %>
<% @posts.each do |post| %>
<%= post.created_at %>
<% end %>
<% end %>
<% else %>
<% @posts.each do |post| %>
<%= post.created_at%>
<% end %>
<% end %>
コントローラーではキャッシュされているか確認して
キャッシュされていないときのみSQLを発行とかする。
if params[:query].blank? && params[:country].blank?
unless fragment_exist?(suffix: params[:page])
@posts = Post.page(params[:page])
else
# キャッシュされてるから @posts いらない
end
else
@posts = Post.where(:query => params[:query])...
end
フラグメントキャッシュはビューに書く。
<% if params[:query].blank? && params[:country].blank? %>
<% cache suffix: params[:page] do %>
<% @posts.each do |post| %>
<%= post.created_at %>
<% end %>
<% end %>
<% else %>
<% @posts.each do |post| %>
<%= post.created_at%>
<% end %>
<% end %>
コントローラーではキャッシュされているか確認して
キャッシュされていないときのみSQLを発行とかする。
if params[:query].blank? && params[:country].blank?
unless fragment_exist?(suffix: params[:page])
@posts = Post.page(params[:page])
else
# キャッシュされてるから @posts いらない
end
else
@posts = Post.where(:query => params[:query])...
end
二度書きしてしまった・・・
cache suffix: params.select{ |key| %w(post index page mode).include?(key) }
はキャッシュのキーにキーがpost index page modeのparamsを用いるって意味で
params[:query].blank? && params[:country].blank? のときのみキャッシュするなら不要だろうと思って
cache suffix: params[:page] に書き換えた。必要なら書き換えて。
フラグメントキャッシュじゃなくてアクションキャッシュの方が良いと思う。
その場合はコントローラーに下の行を書くだけ。
caches_action :cache_suru_action, :cache_path => proc{ params[:page] }, :if => proc{ %w(query country).all?{ |key| params[key].blank? } }
なんか間違ってたらごめんやで
>>985 ご丁寧にありがとうございます
すみません。
勘違いしていました。
ビューではなく、
SQLコマンドで取得した結果内容だけをキャッシュに格納しておく。
次回、同じ内容のリクエストがあり、もしそのキャッシュが存在したら、
いちいちSQLコマンドが実行されず結果だけ取り出される。それをそのままビューに渡す。それが故に処理が早くできる。
つまり、コントローラー内である程度は簡潔できるものだと思いこんでいました
必ずビューへの記載も必要になってくるんですね
結構めんどうな作業になりそうですね。
本当にご丁寧にありがとうございました。
家に帰ったら試してまた報告いたします。
>>985 ここで作られた paginationやmodeパラメータつきのキャッシュをアクション内で消すには
どのように記述するべきですか?
一般的にはRails.cache.delete(:key)
ですが
教えていただいた方法で出来たキャッシュがどこに出来ているのか分かりません。
postsに更新がかかったり、レコードが新たに作られたときに、キャッシュを全て削除したいのですが、
それら(posts#index)で出来たキャッシュを一気に消すにはアクション内でどのように記述するべきですか?
988 :
あ:2013/01/29(火) 06:42:48.31 ID:???
989 :
nobodyさん:2013/01/29(火) 15:50:25.21 ID:9UmlSZdW
991 :
nobodyさん:2013/01/29(火) 17:12:00.58 ID:9UmlSZdW
developmentモードで動いていたcaptchaの画像の表示が
productionモードに移行した途端に表示されなくなりました
同様に色んなところでproductionモードでの挙動がおかしいです。
developmentモードで真剣にバグ潰ししてたのは何だったの?といったレベルです
もうこの際、developmentモードを本番として公開しようと思うのですが
エラー内容を表示させない方法はありますか?
それとproductionモードと比べたときに、遅いとか、何かデメリットはありますか?
config/environments/production.rb の
config.serve_static_assets = true にしても駄目?