【Ruby】Ruby on Rails Part9
at PHP
1:nobodyさん
10/02/19 16:13:13 SpWtnpr8
■前
【Ruby】Ruby on Rails Part8
スレリンク(php板)
■参考サイト
<英語>
本家:URLリンク(www.rubyonrails.org)<)
開発者のblog:URLリンク(weblog.rubyonrails.org)
参考wiki:URLリンク(wiki.rubyonrails.org)
<日本語>
Rails' wiki: URLリンク(wiki.fdiary.net)
2:nobodyさん
10/02/19 16:14:34 WbFNhWFy
■変遷
【Agile】Ruby on rails相談所【DRY】
スレリンク(php板)
【Agile】Ruby on rails相談所 part2【DRY】
スレリンク(php板)
【Ruby】Ruby on Rails Part3
スレリンク(php板)
↓ム板に
Ruby on Rails
スレリンク(tech板)
↓
Ruby on Rails のスレ が
スレリンク(php板)
↓
【Ruby】Ruby on Rails Part6
スレリンク(php板)
↓
【Ruby】Ruby on Rails Part7
スレリンク(php板)
↓
【Ruby】Ruby on Rails Part8
スレリンク(php板)
(イマココ)
3:nobodyさん
10/02/19 16:16:16 WbFNhWFy
rails メーリングリスト
URLリンク(www.fdiary.net)
4:nobodyさん
10/02/19 18:31:41
ブログのような日時で予約投稿する機能を作りたいと思っています。
こういった定期処理はどのように実装したもんでしょうか?
精度的には分単位が必要です。
こちらで考えたのは、毎分ごとにcronでscript/runnerをキック、もしくは
javan's whenever at master - GitHub
URLリンク(github.com)
のようなRubyGemsを使って(といっても上記は実質cronですが)
DBの該当モデルの公開フラグをオンにする、というような実装です。
ただ問題なのは、script/runnerの起動自体が重く数秒(下手すると5秒程度)CPUを占有することもあり、
こういった方法は一般的なものなのか?と思ったしだいです。
5:nobodyさん
10/02/19 18:41:23 WbFNhWFy
Rails で cron を使わずに cron っぽいことを行う方法
poormans_cron プラグイン
URLリンク(everyleaf.com)
[Rails]Rails - crontabでバッチ処理を行う
crontabからscript/runnerでmodelのメソッド呼んで上げればいい
URLリンク(d.hatena.ne.jp)
MOONGIFT: ? RailsのCron処理に「Whenever」:オープンソースを毎日紹介
URLリンク(www.moongift.jp)
6:nobodyさん
10/02/19 18:48:37 R+yZ5C0Y
アプリ側にdrbでアクセスできる口を用意しておいて、
cronからはそれに触るだけ、とかすれば重さは解消
できるかもな。
7:nobodyさん
10/02/19 19:28:20 XnDPmidp
rufus_scheduler
8:nobodyさん
10/02/19 19:29:57 WbFNhWFy
Amazon.co.jp: 小さなチーム、大きな仕事―37シグナルズ成功の法則 (ハヤカワ新書juice):
ジェイソン・フリード, デイヴィッド・ハイネマイヤー・ハンソン, 黒沢 健二: 本
URLリンク(www.amazon.co.jp)
URLリンク(twitter.com)
URLリンク(www.hayakawa-online.co.jp)
9:nobodyさん
10/02/19 19:39:14
>>8
Getting Real の邦訳?
10:nobodyさん
10/02/19 20:15:00 WbFNhWFy
Rails 3 Beautiful Code
URLリンク(www.slideshare.net)
11:nobodyさん
10/02/19 23:19:34
>>4
キューから仕事引っ張り出すデーモン立ててやるのが一般的かな。
キューの実装はいろいろ。
12:nobodyさん
10/02/20 00:16:46
実行する頻度が多くないのなら、script/runnerも十分実用できるけどね。1日1〜2回だけ実行するものとか。
あとは、cronで起動するバッチではコントローラのアクションをnet/httpで叩くだけにして
実際の処理はコントローラ側でやるという方法もアリだと思う。
13:nobodyさん
10/02/20 15:01:40
railsサーバーから別のファイルサーバーに画像をアップロードした場合、
ダウンロードは出来るんだが、画像を表示しようとすると
ルーティングエラーで画像が表示できない。
ただのファイルサーバーを追加するって出来る?
publicにファイルサーバーのショートカット作っても駄目だった。
railsは2.1.2、rubyは1.8.7。
14:nobodyさん
10/02/20 15:05:28 3Z++wair
URLリンク(d.hatena.ne.jp)
15:nobodyさん
10/02/20 15:08:17
何を言っているのか分からないんだが。
環境やパスについてもう少し詳しく情報出さないと分かるわけないでしょ。
普通に考えれば、ファイルサーバの画像を置くパスをWebから見れるように
Apacheなどの設定をしておけば、http://ファイルサーバのホスト/画像のパス
で見れるようになるはず。
16:nobodyさん
10/02/20 15:12:43 zWoV3Do7
>>13
public以外の場所に置いた画像をブラウザから観られるようにしたい
という意味?
17:nobodyさん
10/02/20 15:36:12
簡単なコンボボックスの実装を教えてください!
18:13
10/02/20 15:54:51
>>16
そんな感じ。
画像の保存先を"/Volumes/gazou/upload"っていう
gazouサーバーのuploadフォルダにしたとき、
formからfile_fieldでアップロードするとファイルは
"/Volumes/gazou/upload"にアップされるんです。
indexでimage_tag("/Volumes/gazou/upload/test.jpg"
で表示しようとすると、RoutingErrorになります。
サーバーはとりあえずlighttpd使ってます。
19:nobodyさん
10/02/20 15:57:31
>>18
当たり前だろ、ここはお前レベルの人間が来ていいところじゃない。
ファイルシステムから勉強し直せ。
20:nobodyさん
10/02/20 17:07:46
ははは
21:nobodyさん
10/02/20 17:16:09
>>18
そもそも、そのファイルサーバーの画像はブラウザから見られる?
/Volumes/gazou/upload ←これはサーバーのローカルからアクセスできる”ファイルのパス”
image_tag("/Volumes/gazou/upload/test.jpg") ←ここに指定するのは”URL”
↓
<img src="/Volumes/gazou/upload/test.jpg" />
こういうHTMLになるはずだが、
もしだよ、こんなに仮にローカルのパスがwebから全世界から簡単に見られたら、
パスワードファイルとか大事なDBのデータとかすき放題アクセスできてしまう。
だから、webサーバー、例えばapacheなどでURLとして公開するディレクトリと
ローカルからアクセスできるファイルのパスを関連付けて設定しないと、webブラウザで見られない。
・案1 ファイルサーバーの画像置き場以下をwebサーバーで公開する。
apache等使っているならやり方はググれ。スレ違い
# 簡単だがこの方法の欠点としては、ログインしてない人に画像が見られるのを防ぐといったアクセス管理がちょっとしづらい。
・案2 Railsのコントローラーでファイルサーバーからバイナリで読んで画像としてブラウザに返す
やり方シランw ググれ
>>19
まあまあw
22:nobodyさん
10/02/20 17:17:31
ダウンロードできるなら表示もできるのでは
23:nobodyさん
10/02/20 17:18:43
・案3 忘れてた
/Volumes/gazou/upload から RAILS_ROOT/public/upload にシンボリックリンクを貼って、
image_tag("/upload/test.jpg")
でアクセスする。
こっちも簡単でいいな。
24:nobodyさん
10/02/20 17:21:13
Windowsかな?
ダウンロードはできる、っていうのは、
多分ブラウザにファイルサーバーのパスを突っ込んだら、ファイラーとして動いて表示されてるだけ、とか?
ダウンロードはできる、ってのは見逃してた。上の書き込み全然外してるかもしれんw
25:13
10/02/20 17:42:56
>>24
macです。
「ローカルでしか見ない」っての付け足せば良かった。ゴメン。
ローカルでしか見ないから>>19が言いたいアクセス関係は無視してたんだ。
案3も試してみたけど駄目だった。単にファイラーで動いてるだけなんだな。
RoutingErrorって出るからルーティング出来ればいけるかな?
って思っただけなんだ。
26:nobodyさん
10/02/20 18:30:50 zWoV3Do7
「ショートカット」の件
UNIXでいうシンボリックリンクはrubyやhttpdみたいな
UNIXコマンドからはそのまま読めるけど、
Macでいうエイリアス(UNIXシェルのエイリアスとは意味が違う)だと、
うまく読めないはず。
27:nobodyさん
10/02/20 18:40:44 zWoV3Do7
MacOS X Snow Leopard にて
$ rails myapp
$ cd myapp/public
$ ln -s /Volumes/fuga upload
$ script/server
とした場合、 /Volumes/fuga/hoge/gazou.png には
URLリンク(localhost:3000)
でアクセス可能。
28:nobodyさん
10/02/20 18:49:26
案2ベースだと、send_fileでとりあえずできそう
URLリンク(api.rubyonrails.org)
29:nobodyさん
10/02/20 20:07:25
こんなのにいつまで付き合うの。
30:nobodyさん
10/02/21 01:44:57 o+L/Pmc4
画像もDBに格納して管理する −扱いがめんどうなLOB(ラージオブジェクト)は使わない方法も含め
URLリンク(b.hatena.ne.jp)
- Encode "icon.png" in Base64 as "base64.txt":
--------------------------------------
File.open("base64.txt","w") do |file|
file.write [open("icon.png").read].pack("m")
end
--------------------------------------
- Decode "base64.txt" as a PNG "new_icon.png" file:
--------------------------------------
File.open('new_icon.png', 'wb') do |file|
file << (IO.readlines('base64.txt').to_s.unpack('m')).first
end
--------------------------------------
URLリンク(www.ruby-forum.com)
RubyでBase64
URLリンク(d.hatena.ne.jp)
31:nobodyさん
10/02/21 02:45:34
>>30
BLOB型をなんでそんな嫌ってるのかが分からんね。
記事は面白かったけど前提が強引過ぎてなんとも。
32:nobodyさん
10/02/21 10:01:17
×BLOBが嫌い
○rubyのバイト列の扱いが嫌い
33:nobodyさん
10/02/21 12:44:36
ここRailsスレだろ?
確かにSQLでLOBを扱うのは面倒かもしれんが、
RailsというかActiveRecordならLOBなんて笑っちゃうくらい簡単に扱えるのだが
34:nobodyさん
10/02/21 14:32:45 o+L/Pmc4
URLリンク(books.google.com)
35:nobodyさん
10/02/21 14:35:08
class Blog
class Post
belongs_to :blog
と、関連を指定しているときに post.blog でアクセスできるのはわかったんですが
post.blog.title でソートしたいときに
Post.find(:all) で指定する :order ってどうしたらいいですか?
:joins => "LEFT JOIN blogs" して "ORDER BY blogs.title" みたいな?ことを
SQLっぽいことを書かずにできる方法ありますか。
36:nobodyさん
10/02/21 16:25:55 wFIWx53c
テーブルの結合の一部は :include で出来るけど
:order は ORDER句に書くものを書くところなので
結局そこはSQLにならざるをえない。
Rails3のSQLハンドリングの裏方として採用されている
Arel(Active Relations)ではこうも書けるんだろうけど、
SQLの *隠蔽* にはならんだろうね。
posts.join(blogs).on(posts[:blog_id].eq(blogs[:id])).order(blogs[:title])
37:35
10/02/21 16:51:21
>> 36 ありがとうございます。すっきりしました。
POSTされたパラメータ params[:sort_index] が "updated_at"だったら
そのままコントローラで :order => params[:sort_index] とできるんですが
"blog[title]" のときは結合したテーブル名.カラム名に変えないといけないのが
スマートじゃない気がして、他にもっといい方法があるんじゃないかと思ってました。
Rails3 も Arel も無知なので、勉強してみます。
38:35
10/02/21 17:08:14
自己レス
なら、params[:sort_index]の中身が"blog.title"ってなるようにビュー側を
変えればいいのか orz
なんとなくシンボルでアクセスすることが多いので
params[:blog][:title] → params["blog.title"] はちょっと違和感あるけども
39:nobodyさん
10/02/21 17:49:03
そのパラメータに変なもん指定されて、
SQLがエラーになるよ。
カラム名丸出しもカッコ悪い。
40:35
10/02/21 19:27:35
>>39 確かに、SQLインジェクションはまったく考慮してませんでした。
でも、カラム名丸出しってカッコ悪いんですか?
少なくとも初心者の自分が触れる書籍なんかのコードは大体カラム名丸出しというか、
そもそも FormBuilder がそういう HTML 吐いちゃうから当たり前なんだと思ってました。
41:nobodyさん
10/02/21 19:45:31
カラム名丸出しはカッコ悪くないよ。
でもそう思っちゃう人もいるってことで。
42:nobodyさん
10/02/21 19:47:26
>>40
:orderに入る部分はエスケープされるんだっけ。
そしたらSQLインジェクションの心配はないと思うんだけど、
カッコ悪さに関しては、URL中にSQLの一部が出てくるのがなんか気持ち悪いなあと思ったから。
43:nobodyさん
10/02/21 20:00:49 wFIWx53c
limitに渡る部分はいつぞや脆弱性として報告されて
( URLリンク(secunia.com) )、修正が入ってる。
orderについては↓でrejectされている、ようだ。
URLリンク(dev.rubyonrails.org)
44:35
10/02/21 21:18:26
>>42 なるほどPOST中のデータにピリオドがついてたら、見る人が見れば
SQLのテーブルを指してるかもって思われやすいってことですね。
他のみなさんのレスも勉強になります。ありがとうございます。
と、関係ない質問ですけど、名前空間付きの scaffold をしたときの話で、
scaffold my_namespace/hoge name:string としたときマイグレーションファイルは
my_namespace_hoge という名前のテーブルを作るようになってますが、
モデルの MyNamespace::Hoge は hoge テーブルを参照しようとしてます。
今のところ名前空間は route とか controller の都合でやってるもの、という解釈で
マイグレーションファイルの方を hoge テーブルを作るように毎回書き換えてます。
(モデルのクラスにも名前空間が適用されているんだから、MyNamespace::Hogeクラス
がmy_namespace_hoge テーブルを使ってもいいんじゃないか?というかこっちのが正しくね?
でもテーブル名が長くなっちゃね?ユニークさが増していいんじゃね?と悩みながら)
これってどうするのが on Rails なんでしょうか?
というか自分の環境(JRuby1.4 Rails 2.3.5)だけの問題だったりするんでしょうか?
45:nobodyさん
10/02/21 22:13:12
というか、scaffoldから卒業して自由に作るのが楽だし、楽しいんじゃない?
46:nobodyさん
10/02/21 22:17:43
名前空間付きモデルやろうとしたことあるけど、
結局DBのほうは名前空間持てないのでややこしくなるだけだと思った。
なるべくconventionに従ってややこしいこと避けるならやらない方がいい。
どうしてもやるのなら migration を書き換えるか set_table_name
47:nobodyさん
10/02/21 22:21:17
名前空間とテーブル名は必ずしも合ってなくていいと思うけど。
というか合わせられるとかえって困ることも。
例えばusersテーブルを考えると、ユーザーが自分で操作する画面と、
管理者が操作する画面は別に作る可能性とかある。管理者の方が内部データを操作できるとか。
テーブルと画面が必ず1:1なら、言うとおりでもいいかもしれないけど。
48:35
10/02/21 22:54:30
>>45 確かにそれもわかるんですが、設定よりも規約の
規約がわからない段階だと scaffold で助かることもあります。
あくまで規約にのっとったうえでの自由が Rails 的な楽しみ方なのかな
というのもありますし。
と、scaffold の件は規約にはなってない(テーブル名は任意で、どうでもいいよそんなこと)
ってことなんですかね。。
覚えることがいっぱいで書籍の範疇からはずれたとたんにあたふたしてます。
>>46, 47
名前空間はMVCで言うところのVCよりなところで分割してみたいってのが
あってやってみました。なんか一階層の URL が寂しかったってのもあり。。
users テーブルの例も、複数の UI を用意することはあっても、結局触るモデルは1つ
ってことですね。
テーブル名が衝突するようなこともまずなさそうですし現行のままで行ってみます。
49:nobodyさん
10/02/22 00:21:22
>>48
>覚えることがいっぱいで書籍の範疇からはずれたとたんにあたふたしてます。
scaffoldに頼っている限りは、そうなってしまうよ。
一通り慣れてきたら、scaffoldで自動生成せずにアプリを作るようにしてみると
自分が理解していなかった部分が浮き彫りになるし、
それで分からない事をその都度調べていくと、すごくレベルアップできるよ。
50:35
10/02/22 07:01:04
>>49 > scaffoldに頼っている限りは、そうなってしまうよ。
そのせいですかね??
scaffold を使えば10分でブログができる的な謳い文句はよく見ますが
実際は、それだけで作ったブログなんて誰も使わないわけで、それぐらいの
頼りなさが、ほんとに土台なんだなって、それぐらいはわかります。
最近は、単純にMVC一括でルールに従ったファイル名のファイルを作ってもらう
だけのジェネレータ的な使い方で、あたふたは単に自分の能力の問題、っていう認識です。
モデル名の複数形がテーブル名っていう規約はわかってるんですが、
今回の件のように、モデル側は名前空間を含めないテーブル(hoge)を参照しようとして
マイグレーションファイル、test/unit 以下は名前空間を含めた
テーブル(my_namespace_hoge)を参照しようとするコードを scaffold が吐く
っていうのは、何か知らない規約がある、もしくは環境が変、とかそれなりの
理由があるのかな?と思ったわけです。
名前空間つけたときって、どういうフォルダ構成になるんじゃろって、scaffold で
気軽に知れたのまではよかったんですが、scaffold 直後の rake test:units で、
一発じゃ通らないんで、あれれ?と。
51:nobodyさん
10/02/22 12:43:48
名前空間付きscaffoldってどっかにプラグインなかったけ?今も動くかわからんけど。
俺の場合、管理者用の URLリンク(~~~) 以下用のコントローラー作るときは
script/generate scaffold admin::hoge ってやるけど、
モデルは階層化いらんから
script/destory model admin::hoge
ってすぐ消してる。
もちろんコントローラーをadmin::hogeモデルからhogeモデルへの依存へ書き換えは必要
52:nobodyさん
10/02/22 16:08:14
cukeやRspecなどのTDDやBDDからプログラム作りはいった方がいいんじゃない?
53:35
10/02/22 20:19:06
こだわるような内容じゃないってのは承知の上ですが何回もレスしてすいやせん。
scaffold に限らず、ジェネレータが吐くコード = 標準的(規約)
な考えがあるので、整合性がないように「見える」と疑問がわきまして。
みなさんのレスから察するに、特に大きな理由などはなさそうなので
たまたま名前空間の機能追加中に現れた現象ってことでスルーしてみます。
Rails3になったら、何事もないようになってるのかなー。
本題に対する回答ではないですが、モデルだけ消す方法から、cuke,Rspecという
知らなかったキーワードまで参考になりました。ありがとうございました。
54:nobodyさん
10/02/22 20:43:45 SMf+P9Hc
rubygems-update 1.3.6 Released
URLリンク(www.ruby-forum.com)
55:nobodyさん
10/02/23 00:05:56 qmMkHKt3
RORのままアーキテクチャの変更で10000%高速化したとな。
URLリンク(b.hatena.ne.jp)
ミニブログの Twitterのstats(統計)データ。
URLリンク(kaworu.jpn.org)
- 350,000を超えるユーザ。
- 秒間600リクエスト
- 平均毎秒200-300コネクション。最大時は秒間800コネクション
- MySQLは秒間2,400リクエストを処理する
- 180のRailsインスタンスがある。MongrelのWebサーバを使っている。
- 1つのMySQLサーバ(1つの大きな 8コアのサーバ)と1つのスレーブ。スレーブは、統計とレポートのための読み込み専用(リードオンリー)。
- 雑用処理をするための30+のプロセス
- 8台のSun X4100s
- Railsでのリクエストの処理時間は200 msec
- データベースにかかる時間の平均は、50-100 msec
- 16GBの memcached
56:nobodyさん
10/02/23 00:40:21
前スレでも同じの張ってただろ
いい加減飽きたんだが。
57:nobodyさん
10/02/23 00:43:53 qmMkHKt3
Twitter創始者が語るWeb 2.0の要諦 − @IT
URLリンク(www.atmarkit.co.jp)
Odeo内で始めた小さなプロジェクトが「Twitter」だ。
Ruby on Railsを使って2週間で最初の動くバージョンを作り上げたという。
58:nobodyさん
10/02/23 01:04:24
親切でやってるのかもしれないけど、
なんの言葉もなく何度もURLを貼られるとむかついてくるのだが
59:nobodyさん
10/02/23 01:19:43
何かしらのコメントを付け加えないと、ただのノイズでしかないよな。
60:nobodyさん
10/02/23 01:24:37 24B872MQ
The Rails 3 Upgrade Handbook
URLリンク(www.railsupgradehandbook.com)
61:nobodyさん
10/02/23 17:54:54 qmMkHKt3
>>30
[Rails] DBに入れた画像を表示する
62:nobodyさん
10/02/23 17:56:23 qmMkHKt3
>>30
[Rails] DBに入れた画像を表示する
URLリンク(d.hatena.ne.jp)
63:nobodyさん
10/02/24 06:06:13 xyBYpSVv
URLリンク(www.hostingrails.com)
URLリンク(www.slicehost.com)
URLリンク(www.linode.com)
The Best Ruby on Rails Hosting Services
URLリンク(antoniocangiano.com)
64:nobodyさん
10/02/24 09:27:57
>>55
ニュースは既出っぽい。だがまとめてくれてありがとう。
65:nobodyさん
10/02/24 19:17:55 xyBYpSVv
Unlearn Your MBA (Entire talk)
URLリンク(ecorner.stanford.edu)
David Heineimeier Hansson
66:nobodyさん
10/02/25 02:36:33 B4ZAmzpA
レンタルサーバでredmineを構築していたら
dispatch.cgiを実行したところで
これと同じ症状がでてしまいました。
URLリンク(www.redmine.org)
こういう場合ってredmine側の対応待ちでしょうか?
67:nobodyさん
10/02/25 08:25:52
マカってホント情報弱者だな。
68:nobodyさん
10/02/25 09:21:23 aQeZQ3fd
>>66
エスパー求むって?
とりあえず、構築手順くらい書こうや。
69:nobodyさん
10/02/25 11:35:37
分かる人だけ返事すればいいと思うよ
70:66
10/02/25 12:03:07 B4ZAmzpA
>>68
基本的にはこれと同じ手順で構築しました。
URLリンク(d.hatena.ne.jp)
私の環境では
rubygems 1.3.5
rails 2.3.5
sqlite3
を利用しています。
また、script/server -e production
を利用して実行した場合には正常に動作するのですが
dispatch.cgi経由で実行した場合にのみ
URLリンク(saifis.net)
これと同じように
`__send__': undefined method `env_table' for nil:NilClass (NoMethodError)
というエラーが出てしまいました
RailsのCGIでの起動プロセスに問題があるように見えました
71:nobodyさん
10/02/25 12:55:00 WAzbGxTX
dispatch.cgiの最後は Dispatcher.dispatch だけど、
rails-2.3.5/lib/dispatcher.rb によれば、このクラスの実体はActionController::Dispatcher が代入されている。
dispatch の定義は actionpack-2.3.5/lib/action_controller/dispatcher.rb
にあって、
# DEPRECATE: Remove CGI support
def dispatch(cgi = nil,
session_options = CgiRequest::DEFAULT_SESSION_OPTIONS,
output = $stdout)
new(output).dispatch_cgi(cgi, session_options)
end
dispatchを引数を与えずに呼ぶと cgi は nil になるわけだ。
というわけで Dispatcher.dispatch(CGI.new) あたりに直してはどうかと想像。
72:nobodyさん
10/02/25 14:40:20 mPH3bNCl
質問
filter_parameter_logging :password でリクエストパラメータ中の生パスワードが
ログファイルに書き込まれることは防げますが、一方で SQL文 のログとして
パスワードのダイジェストやソルトなどはそのままログファイルに書き込まれますよね。
これってセキュリティ上好ましくないと思うのですが、考えすぎでしょうか?
バックアップメディアも含め、ログファイルの管理をしっかりやれば問題ない?
73:66
10/02/25 14:58:59 B4ZAmzpA
>>71
ありがとうございます。
さっそく試してみたところ、エラーの部分は通るようになったのですが
今度は別のところでコケてしまいました。
$ ruby public/dispatch.cgi
/home/username/lib/ruby/gem/gems/actionpack-2.3.5/lib/action_controller/cgi_process.rb:29:in `update': can't convert IO into String (TypeError)
cgi_process.rbと
/usr/local/lib/ruby/1.8/cgi.rb
を追ってみたのですが
21 def self.dispatch_cgi(app, cgi, out = $stdout)
22 env = cgi.__send__(:env_table)
23 env.delete "HTTP_CONTENT_LENGTH"
24
25 cgi.stdinput.extend ProperStream
26
27 env["SCRIPT_NAME"] = "" if env["SCRIPT_NAME"] == "/"
28
29 env.update({
30 "rack.version" => [0,1],
31 "rack.input" => cgi.stdinput,
32 "rack.errors" => $stderr,
33 "rack.multithread" => false,
34 "rack.multiprocess" => true,
35 "rack.run_once" => false,
36 "rack.url_scheme" => ["yes", "on", "1"].include?(env["HTTPS"]) ? "https" : "http"
37 })
環境変数を上書きしているように見えるが
よくわからなかったので結局断念することにしました。
74:66
10/02/25 15:00:52 B4ZAmzpA
あと、少し気になったのですが
action_controller/dispatcher.rbの
def dispatchの上に書いてある
# DEPRECATE: Remove CGI support
この文言
これってRailsでのCGIサポートはしないという意味でしょうか?
75:nobodyさん
10/02/25 15:08:09 WAzbGxTX
>>72
運用環境のログレベルでは、実施したSQLまでは出力してないんじゃね?
76:72
10/02/25 15:51:31
>>75
ありがとうございます。
調べたところ、ログファイルの SQL は DEBUGレベルで書き出されており、
production環境のデフォルトログレベルは INFO のため、ご指摘の通り運用環境の
ログには SQL まで書き出されないようになっていました。
production環境で動かしたことのない初心者の早とちりでしたorz
77:nobodyさん
10/02/25 18:36:51
>>74
すでに非推奨になってたかと思う。
Railsアジャイル本でも「CGIいまどき何いってんのハァ?」って感じだったと思う
78:nobodyさん
10/02/25 18:41:37
ちょっと質問があります。
ActiveSexで複数のレコードを同時に更新するスマートな方法はないもんでしょうか?
以下は hoge が1のものだけ2にしようとしているのですが、eachでループ回すのがいいものか?と。
更新できればそれでいいのではと言えばいいのですが、もっと早い書き方があるかと思いまして。
FooBar.find(:all, :conditions => "hoge=1").each{|x| x.update_attributes(:hoge => 2) }
79:nobodyさん
10/02/25 18:43:25
x ActiveSex
o ActiveRecord
悪い、、、缶詰すぎて頭がどうかしてるわ・・・
80:nobodyさん
10/02/25 19:23:05
どんな間違いじゃ
ところでなぜfindをかましてループさせてるのか理由が聞きたい
特に理由がなければ、直接updateすればいい
対象レコードが数千・数万になるだけで相当遅くなると思うんだけど
81:66
10/02/25 21:42:49 B4ZAmzpA
>>77
そうでしたか、遅くて評判悪いのは知ってたんですが
レンサバなのでプロセス常駐させる訳にもいかず、CGI経由で動かせればと思ったのですが
仕方が無いのでちょっと他の方法を模索してみることにします。
ありがとうございました。
82:nobodyさん
10/02/25 22:07:40 aQeZQ3fd
update_all に条件書けるぞ。
83:nobodyさん
10/02/26 00:41:36
返事がないのはぶっ倒れたんじゃないだろうな
84:nobodyさん
10/02/26 01:21:34
専鯖借りれば。共有鯖で動かすのは迷惑としか。
85:nobodyさん
10/02/26 21:16:52 Hdg3KYgD
初心者で悪いんですが、will_pagenateの使い方があまり分からない。
apiのドキュメントって何処にあるか、教えていただけないでしょうか。
86:nobodyさん
10/02/26 21:32:12
>>85
俺が見てるのはここだけど
URLリンク(gitrdoc.com)
87:nobodyさん
10/02/26 21:41:19 MYtnQqym
つーかさ、gem入れるときに生成オフにしてるとしても、
入れればついてくるんだから必要になったらrdocくらい生成しなよ。
面倒ならソースのコメントにまんま載ってるし。
88:nobodyさん
10/02/27 00:54:37 dI5jXaaO
自作サーバカンファレンス
URLリンク(el.jibun.atmarkit.co.jp)
ランニングコストは家賃が15万円、回線費用が5万円、電気代が20万円で、合計の月額費用は40万円。年間に換算すると480万円で、
当初の2880万円から大幅なコスト削減を実現した。
URLリンク(bb.watch.impress.co.jp)
89:nobodyさん
10/02/27 01:59:15 dI5jXaaO
インテル初となる6コア搭載のプロセッサは、4ソケットサーバー対応で最大24コアで稼動することが可能で、
32の DIMM スロットを備えるデルの PowerEdge R900は、最大256GBのメモリを搭載できる。
URLリンク(japan.internet.com)
最新のクアッドコア AMD Opteron プロセッサ 8360 SE(2.5GHz)を採用。「DL785 G5」は最大で8基(32コア)、「DL585 G5」は最大で4基(16コア)搭載可能。
「HP ProLiant 用16GB メモリキット」に対応することで「DL785 G5」で512GB、「DL585 G5」で256GB のメモリを搭載可能となっており、大規模なシステムの構築を可能としている。
URLリンク(japan.internet.com)
90:nobodyさん
10/02/27 02:10:20 dI5jXaaO
Googleサーバの高さは、3.5インチ(約8.8cm)で、データセンター用語で言えば2Uである。
これには、2基のプロセッサと、2基のハードドライブ、そしてGIGABYTE製マザーボードに取り付けた8つのメモリスロットがある。
URLリンク(japan.cnet.com)
91:nobodyさん
10/02/27 03:40:22
Railsアプリケーションが参照するRubyのバージョンはどこで設定されてるのでしょうか?
自分の環境にはRubyがいくつも入ってるため、アプリケーションごとに個別にRubyを指定したいのですがどこで指定すればいいのか分かりません。
92:nobodyさん
10/02/27 03:46:08
逆だろ、
MOONGIFT: ≫ 複数のRubyを切り替えて使いこなす「rvm」:オープンソースを毎日紹介
URLリンク(www.moongift.jp)
を使って、環境毎に切り替えるべきだろ
93:nobodyさん
10/02/27 05:12:01
そんなゴミサイトはどうでもいい
Railsアプリケーション側で使用するRubyへのパスを指定したいと言っている。
94:nobodyさん
10/02/27 05:38:26 EflRYtaW
(3)PATHで指定されたフォルダにある実行ファイル(前に書かれているフォルダが優先)
URLリンク(itpro.nikkeibp.co.jp)
95:nobodyさん
10/02/27 05:42:40
>>93
デプロイしたら手動で環境書き換えるわけか、アフォスw
96:nobodyさん
10/02/27 05:57:26
>>93
Railsアプリケーションってどうやって動いてんの?
Rails が Ruby を reuire してんの?
ぷw
97:nobodyさん
10/02/27 07:53:40
>>91
rails --help
98:nobodyさん
10/02/27 15:45:09
>>81
一応、レンサバでCGI駆動で動かしている人はチラホラいる。ほんとに人少ないスタートアップ時のみ用だそうだが。
前スレあたりに出てたコピペ運動会の人も、最初はCGI駆動だったらしい。
やり方は詳しく知らんから、ググレとしか。ググル時は、レンサバ名も一緒に入れたほうがよいかと思われ。
有名なレンサバならトライしてる人のレポートはある。
逆に言うなら、上手く行ってないレンサバは避けるが吉。
あといきなり契約するんじゃなくて、必ずお試し期間で試してな。
まあ実際動かしても多分かなり重いんで
99:78
10/02/27 15:55:34
>>80 >>82
ありがとう。
findしなくてもupdate_allてこれて条件式付きでいけるのか、本当だ引数にconditionsってあるな!
試してみるっす。
さんきゅーさんきゅー!!
100:nobodyさん
10/02/27 15:59:37
>>81
もし、共有レンサバで重くなったらVPSを試すよろし。
ただし、基本はunmanagedなんで自前で鯖管理しないといけない。
オススメは >>63 のlinodeとslicehostあたり。今のナウはlinodeじゃないかなー。
管理してくれるmanagedのもあったと思うがかなり割高だったとおも
101:nobodyさん
10/02/28 01:27:37 QJDB24//
XREAで、RAILSをfastcgiで動かす。2.3.5
URLリンク(playtoto.blog55.fc2.com)
xreaでrailsをfastcgiで動かしてみた。
URLリンク(www.open-force.info)
102:nobodyさん
10/02/28 01:58:15
CGIはやめておくべきだろうなぁ。
やはり、他人へ迷惑をかけないで、安価でちゃんと動かすには自宅サーバかVPSで運用すべきじゃないかね。
103:nobodyさん
10/02/28 03:28:25
to_json で { string : value } の string をダブルクオテーションでかこっちゃうのを
やめさせられない?
いや、かこっちゃうほうが正しいとは思うんだけど、クライアント側がなくても
解釈してくれるなら、ちょっとでもトラフィックを減らしたいと思って。
104:nobodyさん
10/02/28 08:46:59 JOVD2NU2
lactive_support/json/encoders/hash.rb の to_json を再定義すれば
とりあえずは目的を達成できるのでは?
(今知ったけど、コメントの例がすげーな……)
RFC791を源とする
be conservative in its sending behavior,
and liberal in its receiving behavior
というフレーズもあるように、相手が解釈してくれると期待して規格から
外れるようなことをするようになると、いつかカオスを招くと思う。
105:nobodyさん
10/02/28 09:26:30
Railsにあわせた方がいいのに、
自分の好きなようにいじりたい馬鹿w
後で泣くのは自分だろうな
106:nobodyさん
10/02/28 10:07:26
103が同僚なら俺は全力でその暴挙を阻止する。
107:nobodyさん
10/02/28 10:48:33
俺も全力で止めるな。
あほな事言ってんじゃねーよってね。。
再定義してもいいが、JSONのフォーマットについて100%理解して、
そのテストを書けと。
テスト漏れ、バグがあったらただじゃおかねーぞ、カスが!
くらいは言わせてもらう。
だいたい、トラフィック減らす目的ならgzipで圧縮する事を考えるのが正常な思考だろ。
108:103
10/02/28 10:49:06
>105 ご心配ありがとう。
不特定多数じゃなくて特定少数&寿命短めアプリだから多分泣かないw
Rails もクライアントあっての Rails なわけで、Rails にあわせてれば、すべてが
無問題ってわけでもないっしょ。
>104のとこのソースを見て alias_method_chain でとりあえず目的は達成できやした。
ありがとー。
相手が解釈しないときのフォローもいれておけばカオスは招かないかな。
クライアントで例外をキャッチしたらサーバに通知、それ以降は without な方で
送るようにするとか。
てか、今のJavaScriptエンジンがこのフォーマットを受け付けなくなることってまずなさそうだし、
あっても、その頃にはアプリも寿命を終えてるだろうし、そこまではしないけど
>106
今のところ、「だってあいつ(JavaScript)も RFC に沿ってないんじゃないの?いいじゃん別に」的な
ダメスタンスでいるので理由しだいでは止めますw ご教授ください。
109:nobodyさん
10/02/28 10:50:45
もちろん、仕事ではなくあくまでもただの趣味。
絶対に他人には迷惑をかけないという状況なら、再定義しても文句は言わないよ。
110:103
10/02/28 10:58:45
>>107
レス書いてる途中で見逃しちゃった。
ベンチもはかってないし、ボトルネックにもなってないと思うんだけど。
DBのちっちゃいレコード何万件を送ると、ダブルクオテーションだけで何十KBなのか
と思ったら、消せたらいいのにって思っちゃったわけ。
ちゃんとしたお仕事じゃなくて、ほぼ趣味の話なので、テストもおれだけ。
なんだか、怒られっぱなし(理由もわかるけど)だったので、>109 のレスがなんだかうれしい。
111:nobodyさん
10/02/28 11:00:48
fileコントローラの機能テストを書いたら、302が返ってきて認証してないって怒られました。
fileコントローラのテストで、loginコントローラを操作する方法ってありますか?
それか、テストでbefoerフィルタを上書きしたら出来るのかな?
そもそも機能テストではできない?
何か良い方法がありましたら教えてくださいm(_ _)m
112:103
10/02/28 11:00:56
ならJSONで返すなってご意見もあると思いますが、
そうするとよく知らない JavaScript のライブラリを書き換えないといけないのがいやで。
わがままでごめんなさい。
113:nobodyさん
10/02/28 11:11:35
>>111
ログイン中という状況というのは、プログラムから見れば
クッキーまたはDBにログインフラグが格納されている事であって
ログインコントローラを操作する必要はないよね。
114:nobodyさん
10/02/28 11:20:28
>>ちょっとでもトラフィックを減らしたいと思って。
極小ウェブアプリで心配する必要ねぇ-よ
逆にアジャイルがうしなわれるだろw
115:nobodyさん
10/02/28 11:21:32
>>113
そうかー。ログイン状態のクッキーを再現できれば良さそうですね!!!
盲点。失礼しました。
そしてありがとうござます。助かりました。
116:nobodyさん
10/02/28 12:00:54
>>103
やるのはもちろん勝手だけど、まぁ激しく頭悪いなとは思う。
117:111
10/02/28 12:03:58
だめだー。
毎回クッキーの値が変わってるので、
やはりloginコントローラを操作しないといけない見たい。
皆さんはどんな感じで認証ありの機能テストを実装しているんですか?
118:103
10/02/28 12:30:40
トラフィックが本当に心配というよりはカウボーイコーディング中にふと思ったことをやってみたくなった、
のほうが近いかも。
JavaScirpt にそのままくってもらいたいデータの量をすげーちょっとだけ削れる、
という意味では「あり」な方法なんじゃないかと思うけど。。
少なくとも、ハッシュのキーは常にシンボル、文字エンコーディングは UTF8 としてれば、
だいたいのJavaScriptエンジンで動くんでなかろーか。
iモード.net とかのサービスもこんな感じのJSON返してたような記憶があって、
Rails で何か方法があるのかなーと思ったけどないっぽいので、結果オーバーライド。
Firebug でダブルクオテーションがなくなったのを確認、動いてる jqGrid を見てちょっと満足な
趣味のお話です。
119:nobodyさん
10/02/28 12:46:20
>>117
認証にプラグイン使ってるなら、プラグインのテストを参考に
120:103
10/02/28 12:48:26
って、こんなことも知らなかったのって話ですが、
JSONってJavaScriptのリテラルオブジェクトの表記法のサブセットなのね。
じゃあ、ダブルクオテーションでくくらない今の方法も、言うほど頭悪くないんじゃない?
とか思うのは、おれがおめでたいだけ?
未だに「いいじゃん別に」的なスタンスでいるわりに、「後悔するよ」的なレスの背景が気になる。
具体的に、「前そういう風にしてたら、こんな困ったことがあったよ」って感じの事例が
あったら教えてくらはい。
121:nobodyさん
10/02/28 12:57:51
値に"}"が入ったりとか
122:103
10/02/28 13:05:28
>>121
オーバライドしたメソッド中で
key.instance_of?(Symbol) でハッシュのキーがシンボルのときだけ
ダブルクオテーションでくくらないようにする、ぐらいの配慮はしてまつ。
それだけ?
123:111
10/02/28 13:14:47
>>119
アドバイスありがとう。
loginコントローラのみの機能テストは通っています。
でも、機能テストでfileコントローラからloginコントローラを呼び出せないので、
あきらめました。テスト対象のコントローラ以外のコントローラは呼び出せないのかな?
とりあえず、統合テストで実現できたのでそちらでテストを進めていきます。
お騒がせしました。ありがとうございました。
124:nobodyさん
10/02/28 13:15:07
>>120
趣味でやっているなら、気にしなくていいんだよ。
まぁJSONの件だけを言っているわけじゃなくて、どちらかというと発想というか思考の流れが良くないという感じ。
ついつい身近な人間の事を当てはめて考えてしまうんだよね。
入社3ヶ月目の新人ならまだ許せるが、1年過ぎたらこの発想はないわ、みたいな。
この思考でいけば、いつか必ずこいつのせいで周りが苦労する事になるという気持ちになった、
または実際にそういう目にあったという人は多いだろう。
125:103
10/02/28 14:17:10
>>124
マ板ならわかるけど、まさかRailsスレでそういう次元の話でレスされるとは。。
身近な人間にあてはめちゃったら、10年やって、この発想はないわ、
この先輩のウンコな仕様のせいでみんな苦労してる、思考停止して苦労してることにさえ気づいてない人さえいる、
とか私情だけのかみあわない話もありますけど、Rails でも JSON の話でもなくなりますね。
ということで、技術的にここがダメってのがあったらアドバイスくらはい。
JSONはウンコじゃないと思うけど、JavaScript間とのやりとりで許容される仕様内なら、すっきりした気分になれるな的な。
こういう Rails プラグインで代用できるとかでもいいですけど。
126:nobodyさん
10/02/28 14:19:28
>>125
つまり、トラフィックを減らしたいならJSONのフォーマットを変更するのではなく、
そのJSON文字列をgzip圧縮して送信するべきなんじゃないの?
という話です。
127:103
10/02/28 14:27:30
>>126
ええと、ほんとにトラフィックに困ってるわけでもなく、ベンチもはかってなくて。
このケースで、 gzip 圧縮の前の段階でこういう削り方したらどいういう問題が
ありますか?という話です。
128:nobodyさん
10/02/28 14:33:16
たぶん、それ単体では問題となるケースはないんじゃないかな。
今までのレスというのは、あくまでも>>103の
>いや、かこっちゃうほうが正しいとは思うんだけど、クライアント側がなくても
>解釈してくれるなら、ちょっとでもトラフィックを減らしたいと思って。
という書き込みがある事を前提とした批判なのでね。
でもだんだん前提が変わってきて、
・とりあえずJSONの形式を自由に変更したい
・他人とはまったく関わりがない趣味の範囲
という感じになってるんで、どのようにしてもいいと思う。
129:103
10/02/28 15:19:03
>>128
説明を付け足してるつもりではいたんですが、前提変わってすいやせん。
> ・とりあえずJSONの形式を自由に変更したい
そう、誰もつっこまなかったけど、この JSON で返したいってのがそもそもの間違い?
名前をダブルクオテーションで囲まなければ JSON でないのであれば、
それは JavaScript のハッシュオブジェクトってこと?
レスポンスは JSON じゃなくて、JavaScript のオブジェクトを返すサービス、
っていう位置づけなら、後々は他サービスとの連携も可ってことかな。
この場合は to_json じゃなくて Hash クラスに to_javascript ってメソッドの方が
Rails(Ruby)っぽい気がしてきた。
130:nobodyさん
10/02/28 15:32:24
JSONを返す事自体は悪くないよ。
JSONはJavaScriptの一部ではなく完全に独立したテキストベースのデータファーマットの1つ。
だからto_jsonという名前は正しい。
131:nobodyさん
10/02/28 15:33:58
あ、タイプミス。データフォーマットだった。
132:nobodyさん
10/02/28 15:39:47
既存のWebAPIもJSONかXMLで返すものがほとんどだし、JSONはかなりメジャーな形式だと思うよ
133:103
10/02/28 15:51:28
今回の名前をダブルクオテーションで囲っちゃうウソJSON 化は
to_json メソッドをオーバーライドしちゃってたんですが、それだとおいおい
ホント JSON を返したいときに to_json_without_hoge メソッドを
呼ばなければならず。
んで、ウソ JSON の正体は JavaScript のハッシュオブジェクトではないかという
衝撃、というかなんで最初っからわからなかったんだろう的なことに気づき
to_javascript というメソッド名でHashクラスに追加としたほうが適切かなと。
134:nobodyさん
10/02/28 16:34:45
うざい
135:nobodyさん
10/02/28 18:53:34
どっちもJSONだよカス
136:nobodyさん
10/02/28 19:26:29
だからわざわざrailsから外れようとするなら
rubyで自作しろって話ですよ。
極小プログラムに挑戦したら?
137:103
10/02/28 19:37:32
うざくてすまん。
今となっては、
「それじゃあ、JSONじゃなくてJavaScriptのオブジェクトだよ」ってつっこみがあれば
早々に立ち去ってたと思うけど。
>> 135
あーごめん。>133は書き間違えだ。囲っちゃわないウソJSONですね。
RFC4627 に"A name is a string."とあるので、やっぱりJSONにはなれない。
あくまでJavaScript。
138:nobodyさん
10/02/28 21:22:34 jks5LGKS
小さなチーム、大きな仕事―37シグナルズ成功の法則
週4日勤務で20時間しか働かない
URLリンク(d.hatena.ne.jp)
139:nobodyさん
10/02/28 21:26:24 jks5LGKS
Ruby on Railsの作者より:高まった生産性を仕事を余計にこなすためではなく自分の将来に向けて使おう
URLリンク(d.hatena.ne.jp)
37signalsでは最近週4日制をはじめた
140:nobodyさん
10/03/01 02:47:50 2KPHCIx/
東京Ruby会議03 の USTリンク集
URLリンク(d.hatena.ne.jp)
141:nobodyさん
10/03/01 04:28:56 2KPHCIx/
demo.redmine.orgはHerokuで動いているらしい
URLリンク(d.hatena.ne.jp)
URLリンク(demo.redmine.org)
142:nobodyさん
10/03/01 09:06:09 FyIKgpnq
東京Ruby会議03は、RailsではなくRubyネタが多かった。
メインのセッションは全部Rails無関係、ワークショップが13並行して
走ったが、その1/3くらいがRailsだっただけかな。
143:nobodyさん
10/03/03 14:43:44
>>127
> ええと、ほんとにトラフィックに困ってるわけでもなく、ベンチもはかってなくて。
ここに誰かつっこめよ。
144:nobodyさん
10/03/03 15:02:44 5KPriEMV
asahi.com(朝日新聞社):Rubyのソースコードを暗号化する「RubyEncoder」を3月8日より販売開始 - 企業リリース - ビジネス・経済
URLリンク(www.asahi.com)
145:nobodyさん
10/03/04 00:05:48
Ruby会議のセッション酷過ぎ。
昔からだけど。
もう少し人を選べよ
146:nobodyさん
10/03/04 01:23:55 k95Ywz0Z
>>145
?? どのRubyKaigi ??
147:nobodyさん
10/03/04 02:42:26 gHPB2b8/
URLリンク(jp.rubyist.net)
URLリンク(d.hatena.ne.jp)
148:nobodyさん
10/03/04 09:22:29
>>145
具体性がなさすぎるからさっぱり分からない
完全なる荒らしレベルだぞ
149:nobodyさん
10/03/04 09:40:53 gHPB2b8/
リンク?
URLリンク(twitter.com)
150:nobodyさん
10/03/05 06:24:36 Dpsy2gGp
高価な広告枠、営業部隊、オフィス、いや、会議も事業計画もいらない。
昼間の仕事をしながら、初めは週末の数時間を費やすだけで十分だ。
小さな所帯で、シンプルに、迅速に、臨機応変に―それで僕らは成功している。
二つの大陸に散らばった十数人のメンバーだけで数百万人のクライアントを抱えるソフトウェア会社37シグナルズ
URLリンク(www.amazon.co.jp)
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4901日前に更新/201 KB
担当:undef