【Ruby】Ruby on Rails Part9
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/02/19(金) 16:13:13ID:SpWtnpr8【Ruby】Ruby on Rails Part8
http://pc11.2ch.net/test/read.cgi/php/1252842574/
■参考サイト
<英語>
本家:http://www.rubyonrails.org
API document:http://api.rubyonrails.com/
開発者のblog:http://weblog.rubyonrails.org/
参考wiki:http://wiki.rubyonrails.org/rails
<日本語>
Rails' wiki: http://wiki.fdiary.net/rails/
0002nobodyさん
2010/02/19(金) 16:14:34ID:WbFNhWFy【Agile】Ruby on rails相談所【DRY】
http://pc8.2ch.net/test/read.cgi/php/1118663500/
【Agile】Ruby on rails相談所 part2【DRY】
http://pc10.2ch.net/test/read.cgi/php/1151254378/
【Ruby】Ruby on Rails Part3
http://pc11.2ch.net/test/read.cgi/php/1170760209/
↓ム板に
Ruby on Rails
http://pc11.2ch.net/test/read.cgi/tech/1191381506/
↓
Ruby on Rails のスレ が
http://pc11.2ch.net/test/read.cgi/php/1207425569/
↓
【Ruby】Ruby on Rails Part6
http://pc11.2ch.net/test/read.cgi/php/1224838013/
↓
【Ruby】Ruby on Rails Part7
http://pc11.2ch.net/test/read.cgi/php/1241100447/
↓
【Ruby】Ruby on Rails Part8
http://pc11.2ch.net/test/read.cgi/php/1252842574/
(イマココ)
0003nobodyさん
2010/02/19(金) 16:16:16ID:WbFNhWFyhttp://www.fdiary.net/ml/rails/
0004nobodyさん
2010/02/19(金) 18:31:41ID:???こういった定期処理はどのように実装したもんでしょうか?
精度的には分単位が必要です。
こちらで考えたのは、毎分ごとにcronでscript/runnerをキック、もしくは
javan's whenever at master - GitHub
http://github.com/javan/whenever
のようなRubyGemsを使って(といっても上記は実質cronですが)
DBの該当モデルの公開フラグをオンにする、というような実装です。
ただ問題なのは、script/runnerの起動自体が重く数秒(下手すると5秒程度)CPUを占有することもあり、
こういった方法は一般的なものなのか?と思ったしだいです。
0005nobodyさん
2010/02/19(金) 18:41:23ID:WbFNhWFypoormans_cron プラグイン
http://everyleaf.com/blogs/2009/12/20/poormans_cron/
[Rails]Rails - crontabでバッチ処理を行う
crontabからscript/runnerでmodelのメソッド呼んで上げればいい
http://d.hatena.ne.jp/arcright/20090824/1251142139
MOONGIFT: ? RailsのCron処理に「Whenever」:オープンソースを毎日紹介
http://www.moongift.jp/2009/06/whenever/
0006nobodyさん
2010/02/19(金) 18:48:37ID:R+yZ5C0Ycronからはそれに触るだけ、とかすれば重さは解消
できるかもな。
0007nobodyさん
2010/02/19(金) 19:28:20ID:XnDPmidp0008nobodyさん
2010/02/19(金) 19:29:57ID:WbFNhWFyジェイソン・フリード, デイヴィッド・ハイネマイヤー・ハンソン, 黒沢 健二: 本
http://www.amazon.co.jp/gp/product/4153200115
http://twitter.com/dhh/status/9310086401
http://www.hayakawa-online.co.jp/product/books/220011.html
0010nobodyさん
2010/02/19(金) 20:15:00ID:WbFNhWFyRails 3 Beautiful Code
http://www.slideshare.net/GreggPollack/rails-3-beautiful-code-3219240
0012nobodyさん
2010/02/20(土) 00:16:46ID:???あとは、cronで起動するバッチではコントローラのアクションをnet/httpで叩くだけにして
実際の処理はコントローラ側でやるという方法もアリだと思う。
0013nobodyさん
2010/02/20(土) 15:01:40ID:???ダウンロードは出来るんだが、画像を表示しようとすると
ルーティングエラーで画像が表示できない。
ただのファイルサーバーを追加するって出来る?
publicにファイルサーバーのショートカット作っても駄目だった。
railsは2.1.2、rubyは1.8.7。
0014nobodyさん
2010/02/20(土) 15:05:28ID:3Z++wair0015nobodyさん
2010/02/20(土) 15:08:17ID:???環境やパスについてもう少し詳しく情報出さないと分かるわけないでしょ。
普通に考えれば、ファイルサーバの画像を置くパスをWebから見れるように
Apacheなどの設定をしておけば、http://ファイルサーバのホスト/画像のパス
で見れるようになるはず。
0016nobodyさん
2010/02/20(土) 15:12:43ID:zWoV3Do7public以外の場所に置いた画像をブラウザから観られるようにしたい
という意味?
0017nobodyさん
2010/02/20(土) 15:36:12ID:???001813
2010/02/20(土) 15:54:51ID:???そんな感じ。
画像の保存先を"/Volumes/gazou/upload"っていう
gazouサーバーのuploadフォルダにしたとき、
formからfile_fieldでアップロードするとファイルは
"/Volumes/gazou/upload"にアップされるんです。
indexでimage_tag("/Volumes/gazou/upload/test.jpg"
で表示しようとすると、RoutingErrorになります。
サーバーはとりあえずlighttpd使ってます。
0020nobodyさん
2010/02/20(土) 17:07:46ID:???0021nobodyさん
2010/02/20(土) 17:16:09ID:???そもそも、そのファイルサーバーの画像はブラウザから見られる?
/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
0022nobodyさん
2010/02/20(土) 17:17:31ID:???0023nobodyさん
2010/02/20(土) 17:18:43ID:???/Volumes/gazou/upload から RAILS_ROOT/public/upload にシンボリックリンクを貼って、
image_tag("/upload/test.jpg")
でアクセスする。
こっちも簡単でいいな。
0024nobodyさん
2010/02/20(土) 17:21:13ID:???ダウンロードはできる、っていうのは、
多分ブラウザにファイルサーバーのパスを突っ込んだら、ファイラーとして動いて表示されてるだけ、とか?
ダウンロードはできる、ってのは見逃してた。上の書き込み全然外してるかもしれんw
002513
2010/02/20(土) 17:42:56ID:???macです。
「ローカルでしか見ない」っての付け足せば良かった。ゴメン。
ローカルでしか見ないから>>19が言いたいアクセス関係は無視してたんだ。
案3も試してみたけど駄目だった。単にファイラーで動いてるだけなんだな。
RoutingErrorって出るからルーティング出来ればいけるかな?
って思っただけなんだ。
0026nobodyさん
2010/02/20(土) 18:30:50ID:zWoV3Do7UNIXでいうシンボリックリンクはrubyやhttpdみたいな
UNIXコマンドからはそのまま読めるけど、
Macでいうエイリアス(UNIXシェルのエイリアスとは意味が違う)だと、
うまく読めないはず。
0027nobodyさん
2010/02/20(土) 18:40:44ID:zWoV3Do7$ rails myapp
$ cd myapp/public
$ ln -s /Volumes/fuga upload
$ script/server
とした場合、 /Volumes/fuga/hoge/gazou.png には
http://localhost:3000/upload/hoge/gazou.png
でアクセス可能。
0028nobodyさん
2010/02/20(土) 18:49:26ID:???http://api.rubyonrails.org/classes/ActionController/Streaming.html
0029nobodyさん
2010/02/20(土) 20:07:25ID:???0030nobodyさん
2010/02/21(日) 01:44:57ID:o+L/Pmc4http://b.hatena.ne.jp/entry/neta.ywcafe.net/000774.html
- 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
--------------------------------------
http://www.ruby-forum.com/topic/200065
RubyでBase64
http://d.hatena.ne.jp/nacookan/20071203/1196701095
0032nobodyさん
2010/02/21(日) 10:01:17ID:???○rubyのバイト列の扱いが嫌い
0033nobodyさん
2010/02/21(日) 12:44:36ID:???確かにSQLでLOBを扱うのは面倒かもしれんが、
RailsというかActiveRecordならLOBなんて笑っちゃうくらい簡単に扱えるのだが
0034nobodyさん
2010/02/21(日) 14:32:45ID:o+L/Pmc40035nobodyさん
2010/02/21(日) 14:35:08ID:???class Post
belongs_to :blog
と、関連を指定しているときに post.blog でアクセスできるのはわかったんですが
post.blog.title でソートしたいときに
Post.find(:all) で指定する :order ってどうしたらいいですか?
:joins => "LEFT JOIN blogs" して "ORDER BY blogs.title" みたいな?ことを
SQLっぽいことを書かずにできる方法ありますか。
0036nobodyさん
2010/02/21(日) 16:25:55ID:wFIWx53c:order は ORDER句に書くものを書くところなので
結局そこはSQLにならざるをえない。
Rails3のSQLハンドリングの裏方として採用されている
Arel(Active Relations)ではこうも書けるんだろうけど、
SQLの *隠蔽* にはならんだろうね。
posts.join(blogs).on(posts[:blog_id].eq(blogs[:id])).order(blogs[:title])
003735
2010/02/21(日) 16:51:21ID:???POSTされたパラメータ params[:sort_index] が "updated_at"だったら
そのままコントローラで :order => params[:sort_index] とできるんですが
"blog[title]" のときは結合したテーブル名.カラム名に変えないといけないのが
スマートじゃない気がして、他にもっといい方法があるんじゃないかと思ってました。
Rails3 も Arel も無知なので、勉強してみます。
003835
2010/02/21(日) 17:08:14ID:???なら、params[:sort_index]の中身が"blog.title"ってなるようにビュー側を
変えればいいのか orz
なんとなくシンボルでアクセスすることが多いので
params[:blog][:title] → params["blog.title"] はちょっと違和感あるけども
0039nobodyさん
2010/02/21(日) 17:49:03ID:???SQLがエラーになるよ。
カラム名丸出しもカッコ悪い。
004035
2010/02/21(日) 19:27:35ID:???でも、カラム名丸出しってカッコ悪いんですか?
少なくとも初心者の自分が触れる書籍なんかのコードは大体カラム名丸出しというか、
そもそも FormBuilder がそういう HTML 吐いちゃうから当たり前なんだと思ってました。
0041nobodyさん
2010/02/21(日) 19:45:31ID:???でもそう思っちゃう人もいるってことで。
0042nobodyさん
2010/02/21(日) 19:47:26ID:???:orderに入る部分はエスケープされるんだっけ。
そしたらSQLインジェクションの心配はないと思うんだけど、
カッコ悪さに関しては、URL中にSQLの一部が出てくるのがなんか気持ち悪いなあと思ったから。
■ このスレッドは過去ログ倉庫に格納されています