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

【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/
0043nobodyさん2010/02/21(日) 20:00:49ID:wFIWx53c
limitに渡る部分はいつぞや脆弱性として報告されて
( http://secunia.com/advisories/31875/ )、修正が入ってる。

orderについては↓でrejectされている、ようだ。
http://dev.rubyonrails.org/ticket/7684
0044352010/02/21(日) 21:18:26ID:???
>>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)だけの問題だったりするんでしょうか?

0045nobodyさん2010/02/21(日) 22:13:12ID:???
というか、scaffoldから卒業して自由に作るのが楽だし、楽しいんじゃない?

0046nobodyさん2010/02/21(日) 22:17:43ID:???
名前空間付きモデルやろうとしたことあるけど、
結局DBのほうは名前空間持てないのでややこしくなるだけだと思った。
なるべくconventionに従ってややこしいこと避けるならやらない方がいい。
どうしてもやるのなら migration を書き換えるか set_table_name
0047nobodyさん2010/02/21(日) 22:21:17ID:???
名前空間とテーブル名は必ずしも合ってなくていいと思うけど。
というか合わせられるとかえって困ることも。

例えばusersテーブルを考えると、ユーザーが自分で操作する画面と、
管理者が操作する画面は別に作る可能性とかある。管理者の方が内部データを操作できるとか。
テーブルと画面が必ず1:1なら、言うとおりでもいいかもしれないけど。
0048352010/02/21(日) 22:54:30ID:???
>>45 確かにそれもわかるんですが、設定よりも規約の
規約がわからない段階だと scaffold で助かることもあります。

あくまで規約にのっとったうえでの自由が Rails 的な楽しみ方なのかな
というのもありますし。


と、scaffold の件は規約にはなってない(テーブル名は任意で、どうでもいいよそんなこと)
ってことなんですかね。。
覚えることがいっぱいで書籍の範疇からはずれたとたんにあたふたしてます。

>>46, 47
名前空間はMVCで言うところのVCよりなところで分割してみたいってのが
あってやってみました。なんか一階層の URL が寂しかったってのもあり。。

users テーブルの例も、複数の UI を用意することはあっても、結局触るモデルは1つ
ってことですね。
テーブル名が衝突するようなこともまずなさそうですし現行のままで行ってみます。
0049nobodyさん2010/02/22(月) 00:21:22ID:???
>>48

>覚えることがいっぱいで書籍の範疇からはずれたとたんにあたふたしてます。

scaffoldに頼っている限りは、そうなってしまうよ。
一通り慣れてきたら、scaffoldで自動生成せずにアプリを作るようにしてみると
自分が理解していなかった部分が浮き彫りになるし、
それで分からない事をその都度調べていくと、すごくレベルアップできるよ。

0050352010/02/22(月) 07:01:04ID:???
>>49 > scaffoldに頼っている限りは、そうなってしまうよ。

そのせいですかね??
scaffold を使えば10分でブログができる的な謳い文句はよく見ますが
実際は、それだけで作ったブログなんて誰も使わないわけで、それぐらいの
頼りなさが、ほんとに土台なんだなって、それぐらいはわかります。
最近は、単純にMVC一括でルールに従ったファイル名のファイルを作ってもらう
だけのジェネレータ的な使い方で、あたふたは単に自分の能力の問題、っていう認識です。

モデル名の複数形がテーブル名っていう規約はわかってるんですが、
今回の件のように、モデル側は名前空間を含めないテーブル(hoge)を参照しようとして
マイグレーションファイル、test/unit 以下は名前空間を含めた
テーブル(my_namespace_hoge)を参照しようとするコードを scaffold が吐く
っていうのは、何か知らない規約がある、もしくは環境が変、とかそれなりの
理由があるのかな?と思ったわけです。

名前空間つけたときって、どういうフォルダ構成になるんじゃろって、scaffold で
気軽に知れたのまではよかったんですが、scaffold 直後の rake test:units で、
一発じゃ通らないんで、あれれ?と。
0051nobodyさん2010/02/22(月) 12:43:48ID:???
名前空間付きscaffoldってどっかにプラグインなかったけ?今も動くかわからんけど。

俺の場合、管理者用の http://~~~/admin/ 以下用のコントローラー作るときは
 script/generate scaffold admin::hoge ってやるけど、
モデルは階層化いらんから
 script/destory model admin::hoge
ってすぐ消してる。

もちろんコントローラーをadmin::hogeモデルからhogeモデルへの依存へ書き換えは必要
0052nobodyさん2010/02/22(月) 16:08:14ID:???
cukeやRspecなどのTDDやBDDからプログラム作りはいった方がいいんじゃない?
0053352010/02/22(月) 20:19:06ID:???
こだわるような内容じゃないってのは承知の上ですが何回もレスしてすいやせん。

scaffold に限らず、ジェネレータが吐くコード = 標準的(規約)
な考えがあるので、整合性がないように「見える」と疑問がわきまして。
みなさんのレスから察するに、特に大きな理由などはなさそうなので
たまたま名前空間の機能追加中に現れた現象ってことでスルーしてみます。
Rails3になったら、何事もないようになってるのかなー。

本題に対する回答ではないですが、モデルだけ消す方法から、cuke,Rspecという
知らなかったキーワードまで参考になりました。ありがとうございました。
0054nobodyさん2010/02/22(月) 20:43:45ID:SMf+P9Hc

rubygems-update 1.3.6 Released
http://www.ruby-forum.com/topic/204581
0055nobodyさん2010/02/23(火) 00:05:56ID:qmMkHKt3
RORのままアーキテクチャの変更で10000%高速化したとな。
ttp://b.hatena.ne.jp/entry/highscalability.com/scaling-twitter-making-twitter-10000-percent-faster

ミニブログの Twitterのstats(統計)データ。
http://kaworu.jpn.org/kaworu/2008-01-16-2.php
- 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
0056nobodyさん2010/02/23(火) 00:40:21ID:???
前スレでも同じの張ってただろ
いい加減飽きたんだが。
0057nobodyさん2010/02/23(火) 00:43:53ID:qmMkHKt3

Twitter創始者が語るWeb 2.0の要諦 − @IT
http://www.atmarkit.co.jp/news/200711/16/twitter.html
Odeo内で始めた小さなプロジェクトが「Twitter」だ。
Ruby on Railsを使って2週間で最初の動くバージョンを作り上げたという。
0058nobodyさん2010/02/23(火) 01:04:24ID:???
親切でやってるのかもしれないけど、
なんの言葉もなく何度もURLを貼られるとむかついてくるのだが
0059nobodyさん2010/02/23(火) 01:19:43ID:???
何かしらのコメントを付け加えないと、ただのノイズでしかないよな。
0060nobodyさん2010/02/23(火) 01:24:37ID:24B872MQ

The Rails 3 Upgrade Handbook
http://www.railsupgradehandbook.com/
0061nobodyさん2010/02/23(火) 17:54:54ID:qmMkHKt3

>>30
[Rails] DBに入れた画像を表示する
0062nobodyさん2010/02/23(火) 17:56:23ID:qmMkHKt3

>>30
[Rails] DBに入れた画像を表示する
http://d.hatena.ne.jp/hichiriki/20100110/1263125573
0063nobodyさん2010/02/24(水) 06:06:13ID:xyBYpSVv


http://www.hostingrails.com/?url_string=index
http://www.slicehost.com/
http://www.linode.com/

The Best Ruby on Rails Hosting Services
http://antoniocangiano.com/the-best-ruby-on-rails-hosting-services/

0064nobodyさん2010/02/24(水) 09:27:57ID:???
>>55
ニュースは既出っぽい。だがまとめてくれてありがとう。
0065nobodyさん2010/02/24(水) 19:17:55ID:xyBYpSVv
Unlearn Your MBA (Entire talk)  
http://ecorner.stanford.edu/authorMaterialInfo.html?mid=2351
David Heineimeier Hansson
0066nobodyさん2010/02/25(木) 02:36:33ID:B4ZAmzpA
レンタルサーバでredmineを構築していたら
dispatch.cgiを実行したところで
これと同じ症状がでてしまいました。
http://www.redmine.org/boards/2/topics/11439

こういう場合ってredmine側の対応待ちでしょうか?
0067nobodyさん2010/02/25(木) 08:25:52ID:???
マカってホント情報弱者だな。
0068nobodyさん2010/02/25(木) 09:21:23ID:aQeZQ3fd
>>66

エスパー求むって?
とりあえず、構築手順くらい書こうや。
0069nobodyさん2010/02/25(木) 11:35:37ID:???
分かる人だけ返事すればいいと思うよ
0070662010/02/25(木) 12:03:07ID:B4ZAmzpA
>>68
基本的にはこれと同じ手順で構築しました。
http://d.hatena.ne.jp/toritori0318/20091103/1257260011

私の環境では
rubygems 1.3.5
rails 2.3.5
sqlite3
を利用しています。

また、script/server -e production
を利用して実行した場合には正常に動作するのですが
dispatch.cgi経由で実行した場合にのみ
http://saifis.net/?cat=13
これと同じように
`__send__': undefined method `env_table' for nil:NilClass (NoMethodError)
というエラーが出てしまいました
RailsのCGIでの起動プロセスに問題があるように見えました
0071nobodyさん2010/02/25(木) 12:55:00ID: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) あたりに直してはどうかと想像。
0072nobodyさん2010/02/25(木) 14:40:20ID:mPH3bNCl
質問

filter_parameter_logging :password でリクエストパラメータ中の生パスワードが
ログファイルに書き込まれることは防げますが、一方で SQL文 のログとして
パスワードのダイジェストやソルトなどはそのままログファイルに書き込まれますよね。

これってセキュリティ上好ましくないと思うのですが、考えすぎでしょうか?
バックアップメディアも含め、ログファイルの管理をしっかりやれば問題ない?
0073662010/02/25(木) 14:58:59ID: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 })
環境変数を上書きしているように見えるが
よくわからなかったので結局断念することにしました。

0074662010/02/25(木) 15:00:52ID:B4ZAmzpA
あと、少し気になったのですが
action_controller/dispatcher.rbの
def dispatchの上に書いてある
# DEPRECATE: Remove CGI support
この文言
これってRailsでのCGIサポートはしないという意味でしょうか?
0075nobodyさん2010/02/25(木) 15:08:09ID:WAzbGxTX
>>72
運用環境のログレベルでは、実施したSQLまでは出力してないんじゃね?
0076722010/02/25(木) 15:51:31ID:???
>>75
ありがとうございます。
調べたところ、ログファイルの SQL は DEBUGレベルで書き出されており、
production環境のデフォルトログレベルは INFO のため、ご指摘の通り運用環境の
ログには SQL まで書き出されないようになっていました。

production環境で動かしたことのない初心者の早とちりでしたorz
0077nobodyさん2010/02/25(木) 18:36:51ID:???
>>74
すでに非推奨になってたかと思う。
Railsアジャイル本でも「CGIいまどき何いってんのハァ?」って感じだったと思う
0078nobodyさん2010/02/25(木) 18:41:37ID:???
ちょっと質問があります。

ActiveSexで複数のレコードを同時に更新するスマートな方法はないもんでしょうか?

以下は hoge が1のものだけ2にしようとしているのですが、eachでループ回すのがいいものか?と。
更新できればそれでいいのではと言えばいいのですが、もっと早い書き方があるかと思いまして。

FooBar.find(:all, :conditions => "hoge=1").each{|x| x.update_attributes(:hoge => 2) }
0079nobodyさん2010/02/25(木) 18:43:25ID:???
x ActiveSex
o ActiveRecord

悪い、、、缶詰すぎて頭がどうかしてるわ・・・
0080nobodyさん2010/02/25(木) 19:23:05ID:???
どんな間違いじゃ

ところでなぜfindをかましてループさせてるのか理由が聞きたい
特に理由がなければ、直接updateすればいい
対象レコードが数千・数万になるだけで相当遅くなると思うんだけど
0081662010/02/25(木) 21:42:49ID:B4ZAmzpA
>>77
そうでしたか、遅くて評判悪いのは知ってたんですが
レンサバなのでプロセス常駐させる訳にもいかず、CGI経由で動かせればと思ったのですが
仕方が無いのでちょっと他の方法を模索してみることにします。
ありがとうございました。
0082nobodyさん2010/02/25(木) 22:07:40ID:aQeZQ3fd
update_all に条件書けるぞ。
0083nobodyさん2010/02/26(金) 00:41:36ID:???
返事がないのはぶっ倒れたんじゃないだろうな
0084nobodyさん2010/02/26(金) 01:21:34ID:???
専鯖借りれば。共有鯖で動かすのは迷惑としか。
0085nobodyさん2010/02/26(金) 21:16:52ID:Hdg3KYgD
初心者で悪いんですが、will_pagenateの使い方があまり分からない。
apiのドキュメントって何処にあるか、教えていただけないでしょうか。
0086nobodyさん2010/02/26(金) 21:32:12ID:???
>>85
俺が見てるのはここだけど
http://gitrdoc.com/mislav/will_paginate/tree/master/
0087nobodyさん2010/02/26(金) 21:41:19ID:MYtnQqym
つーかさ、gem入れるときに生成オフにしてるとしても、
入れればついてくるんだから必要になったらrdocくらい生成しなよ。
面倒ならソースのコメントにまんま載ってるし。
0088nobodyさん2010/02/27(土) 00:54:37ID:dI5jXaaO
自作サーバカンファレンス
http://el.jibun.atmarkit.co.jp/rakuten/2009/12/post-aae3.html

ランニングコストは家賃が15万円、回線費用が5万円、電気代が20万円で、合計の月額費用は40万円。年間に換算すると480万円で、
当初の2880万円から大幅なコスト削減を実現した。
http://bb.watch.impress.co.jp/docs/news/20091126_331459.html
0089nobodyさん2010/02/27(土) 01:59:15ID:dI5jXaaO

インテル初となる6コア搭載のプロセッサは、4ソケットサーバー対応で最大24コアで稼動することが可能で、
32の DIMM スロットを備えるデルの PowerEdge R900は、最大256GBのメモリを搭載できる。
http://japan.internet.com/webtech/20080926/5.html

最新のクアッドコア AMD Opteron プロセッサ 8360 SE(2.5GHz)を採用。「DL785 G5」は最大で8基(32コア)、「DL585 G5」は最大で4基(16コア)搭載可能。
「HP ProLiant 用16GB メモリキット」に対応することで「DL785 G5」で512GB、「DL585 G5」で256GB のメモリを搭載可能となっており、大規模なシステムの構築を可能としている。
http://japan.internet.com/webtech/20080731/1.html
0090nobodyさん2010/02/27(土) 02:10:20ID:dI5jXaaO
Googleサーバの高さは、3.5インチ(約8.8cm)で、データセンター用語で言えば2Uである。
これには、2基のプロセッサと、2基のハードドライブ、そしてGIGABYTE製マザーボードに取り付けた8つのメモリスロットがある。
http://japan.cnet.com/special/story/0,2000056049,20390984-2,00.htm
0091nobodyさん2010/02/27(土) 03:40:22ID:???
Railsアプリケーションが参照するRubyのバージョンはどこで設定されてるのでしょうか?
自分の環境にはRubyがいくつも入ってるため、アプリケーションごとに個別にRubyを指定したいのですがどこで指定すればいいのか分かりません。
0092nobodyさん2010/02/27(土) 03:46:08ID:???
逆だろ、
MOONGIFT: ≫ 複数のRubyを切り替えて使いこなす「rvm」:オープンソースを毎日紹介
http://www.moongift.jp/2009/09/rvm/

を使って、環境毎に切り替えるべきだろ
0093nobodyさん2010/02/27(土) 05:12:01ID:???
そんなゴミサイトはどうでもいい
Railsアプリケーション側で使用するRubyへのパスを指定したいと言っている。
0094nobodyさん2010/02/27(土) 05:38:26ID:EflRYtaW
(3)PATHで指定されたフォルダにある実行ファイル(前に書かれているフォルダが優先)
http://itpro.nikkeibp.co.jp/article/COLUMN/20080603/305834/
0095nobodyさん2010/02/27(土) 05:42:40ID:???
>>93
デプロイしたら手動で環境書き換えるわけか、アフォスw
0096nobodyさん2010/02/27(土) 05:57:26ID:???
>>93
Railsアプリケーションってどうやって動いてんの?
Rails が Ruby を reuire してんの?

ぷw
0097nobodyさん2010/02/27(土) 07:53:40ID:???
>>91
rails --help
0098nobodyさん2010/02/27(土) 15:45:09ID:???
>>81
一応、レンサバでCGI駆動で動かしている人はチラホラいる。ほんとに人少ないスタートアップ時のみ用だそうだが。
前スレあたりに出てたコピペ運動会の人も、最初はCGI駆動だったらしい。

やり方は詳しく知らんから、ググレとしか。ググル時は、レンサバ名も一緒に入れたほうがよいかと思われ。
有名なレンサバならトライしてる人のレポートはある。
逆に言うなら、上手く行ってないレンサバは避けるが吉。

あといきなり契約するんじゃなくて、必ずお試し期間で試してな。
まあ実際動かしても多分かなり重いんで
0099782010/02/27(土) 15:55:34ID:???
>>80 >>82
ありがとう。
findしなくてもupdate_allてこれて条件式付きでいけるのか、本当だ引数にconditionsってあるな!
試してみるっす。

さんきゅーさんきゅー!!
0100nobodyさん2010/02/27(土) 15:59:37ID:???
>>81
もし、共有レンサバで重くなったらVPSを試すよろし。
ただし、基本はunmanagedなんで自前で鯖管理しないといけない。
オススメは >>63 のlinodeとslicehostあたり。今のナウはlinodeじゃないかなー。

管理してくれるmanagedのもあったと思うがかなり割高だったとおも
0101nobodyさん2010/02/28(日) 01:27:37ID:QJDB24//

XREAで、RAILSをfastcgiで動かす。2.3.5
http://playtoto.blog55.fc2.com/blog-entry-211.html
xreaでrailsをfastcgiで動かしてみた。
http://www.open-force.info/index.php/blog/show/l/60
0102nobodyさん2010/02/28(日) 01:58:15ID:???
CGIはやめておくべきだろうなぁ。
やはり、他人へ迷惑をかけないで、安価でちゃんと動かすには自宅サーバかVPSで運用すべきじゃないかね。
0103nobodyさん2010/02/28(日) 03:28:25ID:???
to_json で { string : value } の string をダブルクオテーションでかこっちゃうのを
やめさせられない?
いや、かこっちゃうほうが正しいとは思うんだけど、クライアント側がなくても
解釈してくれるなら、ちょっとでもトラフィックを減らしたいと思って。
0104nobodyさん2010/02/28(日) 08:46:59ID:JOVD2NU2
lactive_support/json/encoders/hash.rb の to_json を再定義すれば
とりあえずは目的を達成できるのでは?
(今知ったけど、コメントの例がすげーな……)

RFC791を源とする
be conservative in its sending behavior,
and liberal in its receiving behavior
というフレーズもあるように、相手が解釈してくれると期待して規格から
外れるようなことをするようになると、いつかカオスを招くと思う。
0105nobodyさん2010/02/28(日) 09:26:30ID:???
Railsにあわせた方がいいのに、
自分の好きなようにいじりたい馬鹿w

後で泣くのは自分だろうな
0106nobodyさん2010/02/28(日) 10:07:26ID:???
103が同僚なら俺は全力でその暴挙を阻止する。
0107nobodyさん2010/02/28(日) 10:48:33ID:???
俺も全力で止めるな。
あほな事言ってんじゃねーよってね。。

再定義してもいいが、JSONのフォーマットについて100%理解して、
そのテストを書けと。
テスト漏れ、バグがあったらただじゃおかねーぞ、カスが!
くらいは言わせてもらう。

だいたい、トラフィック減らす目的ならgzipで圧縮する事を考えるのが正常な思考だろ。

01081032010/02/28(日) 10:49:06ID:???
>105 ご心配ありがとう。
不特定多数じゃなくて特定少数&寿命短めアプリだから多分泣かないw
Rails もクライアントあっての Rails なわけで、Rails にあわせてれば、すべてが
無問題ってわけでもないっしょ。

>104のとこのソースを見て alias_method_chain でとりあえず目的は達成できやした。
ありがとー。

相手が解釈しないときのフォローもいれておけばカオスは招かないかな。
クライアントで例外をキャッチしたらサーバに通知、それ以降は without な方で
送るようにするとか。
てか、今のJavaScriptエンジンがこのフォーマットを受け付けなくなることってまずなさそうだし、
あっても、その頃にはアプリも寿命を終えてるだろうし、そこまではしないけど

>106
今のところ、「だってあいつ(JavaScript)も RFC に沿ってないんじゃないの?いいじゃん別に」的な
ダメスタンスでいるので理由しだいでは止めますw ご教授ください。
0109nobodyさん2010/02/28(日) 10:50:45ID:???
もちろん、仕事ではなくあくまでもただの趣味。
絶対に他人には迷惑をかけないという状況なら、再定義しても文句は言わないよ。
01101032010/02/28(日) 10:58:45ID:???
>>107
レス書いてる途中で見逃しちゃった。

ベンチもはかってないし、ボトルネックにもなってないと思うんだけど。
DBのちっちゃいレコード何万件を送ると、ダブルクオテーションだけで何十KBなのか
と思ったら、消せたらいいのにって思っちゃったわけ。

ちゃんとしたお仕事じゃなくて、ほぼ趣味の話なので、テストもおれだけ。
なんだか、怒られっぱなし(理由もわかるけど)だったので、>109 のレスがなんだかうれしい。
0111nobodyさん2010/02/28(日) 11:00:48ID:???
fileコントローラの機能テストを書いたら、302が返ってきて認証してないって怒られました。

fileコントローラのテストで、loginコントローラを操作する方法ってありますか?
それか、テストでbefoerフィルタを上書きしたら出来るのかな?
そもそも機能テストではできない?

何か良い方法がありましたら教えてくださいm(_ _)m

01121032010/02/28(日) 11:00:56ID:???
ならJSONで返すなってご意見もあると思いますが、
そうするとよく知らない JavaScript のライブラリを書き換えないといけないのがいやで。
わがままでごめんなさい。
0113nobodyさん2010/02/28(日) 11:11:35ID:???
>>111
ログイン中という状況というのは、プログラムから見れば
クッキーまたはDBにログインフラグが格納されている事であって
ログインコントローラを操作する必要はないよね。
0114nobodyさん2010/02/28(日) 11:20:28ID:???
>>ちょっとでもトラフィックを減らしたいと思って。

極小ウェブアプリで心配する必要ねぇ-よ
逆にアジャイルがうしなわれるだろw
0115nobodyさん2010/02/28(日) 11:21:32ID:???
>>113
そうかー。ログイン状態のクッキーを再現できれば良さそうですね!!!
盲点。失礼しました。
そしてありがとうござます。助かりました。
0116nobodyさん2010/02/28(日) 12:00:54ID:???
>>103
やるのはもちろん勝手だけど、まぁ激しく頭悪いなとは思う。
01171112010/02/28(日) 12:03:58ID:???
だめだー。
毎回クッキーの値が変わってるので、
やはりloginコントローラを操作しないといけない見たい。

皆さんはどんな感じで認証ありの機能テストを実装しているんですか?
01181032010/02/28(日) 12:30:40ID:???
トラフィックが本当に心配というよりはカウボーイコーディング中にふと思ったことをやってみたくなった、
のほうが近いかも。

JavaScirpt にそのままくってもらいたいデータの量をすげーちょっとだけ削れる、
という意味では「あり」な方法なんじゃないかと思うけど。。
少なくとも、ハッシュのキーは常にシンボル、文字エンコーディングは UTF8 としてれば、
だいたいのJavaScriptエンジンで動くんでなかろーか。

iモード.net とかのサービスもこんな感じのJSON返してたような記憶があって、
Rails で何か方法があるのかなーと思ったけどないっぽいので、結果オーバーライド。
Firebug でダブルクオテーションがなくなったのを確認、動いてる jqGrid を見てちょっと満足な
趣味のお話です。
0119nobodyさん2010/02/28(日) 12:46:20ID:???
>>117
認証にプラグイン使ってるなら、プラグインのテストを参考に
01201032010/02/28(日) 12:48:26ID:???
って、こんなことも知らなかったのって話ですが、
JSONってJavaScriptのリテラルオブジェクトの表記法のサブセットなのね。

じゃあ、ダブルクオテーションでくくらない今の方法も、言うほど頭悪くないんじゃない?
とか思うのは、おれがおめでたいだけ?
未だに「いいじゃん別に」的なスタンスでいるわりに、「後悔するよ」的なレスの背景が気になる。
具体的に、「前そういう風にしてたら、こんな困ったことがあったよ」って感じの事例が
あったら教えてくらはい。
0121nobodyさん2010/02/28(日) 12:57:51ID:???
値に"}"が入ったりとか
01221032010/02/28(日) 13:05:28ID:???
>>121
オーバライドしたメソッド中で
key.instance_of?(Symbol) でハッシュのキーがシンボルのときだけ
ダブルクオテーションでくくらないようにする、ぐらいの配慮はしてまつ。

それだけ?
01231112010/02/28(日) 13:14:47ID:???
>>119
アドバイスありがとう。
loginコントローラのみの機能テストは通っています。
でも、機能テストでfileコントローラからloginコントローラを呼び出せないので、
あきらめました。テスト対象のコントローラ以外のコントローラは呼び出せないのかな?

とりあえず、統合テストで実現できたのでそちらでテストを進めていきます。
お騒がせしました。ありがとうございました。

0124nobodyさん2010/02/28(日) 13:15:07ID:???
>>120
趣味でやっているなら、気にしなくていいんだよ。
まぁJSONの件だけを言っているわけじゃなくて、どちらかというと発想というか思考の流れが良くないという感じ。

ついつい身近な人間の事を当てはめて考えてしまうんだよね。
入社3ヶ月目の新人ならまだ許せるが、1年過ぎたらこの発想はないわ、みたいな。
この思考でいけば、いつか必ずこいつのせいで周りが苦労する事になるという気持ちになった、
または実際にそういう目にあったという人は多いだろう。

01251032010/02/28(日) 14:17:10ID:???
>>124
マ板ならわかるけど、まさかRailsスレでそういう次元の話でレスされるとは。。

身近な人間にあてはめちゃったら、10年やって、この発想はないわ、
この先輩のウンコな仕様のせいでみんな苦労してる、思考停止して苦労してることにさえ気づいてない人さえいる、
とか私情だけのかみあわない話もありますけど、Rails でも JSON の話でもなくなりますね。

ということで、技術的にここがダメってのがあったらアドバイスくらはい。
JSONはウンコじゃないと思うけど、JavaScript間とのやりとりで許容される仕様内なら、すっきりした気分になれるな的な。
こういう Rails プラグインで代用できるとかでもいいですけど。
0126nobodyさん2010/02/28(日) 14:19:28ID:???
>>125
つまり、トラフィックを減らしたいならJSONのフォーマットを変更するのではなく、
そのJSON文字列をgzip圧縮して送信するべきなんじゃないの?
という話です。
01271032010/02/28(日) 14:27:30ID:???
>>126
ええと、ほんとにトラフィックに困ってるわけでもなく、ベンチもはかってなくて。
このケースで、 gzip 圧縮の前の段階でこういう削り方したらどいういう問題が
ありますか?という話です。
0128nobodyさん2010/02/28(日) 14:33:16ID:???
たぶん、それ単体では問題となるケースはないんじゃないかな。

今までのレスというのは、あくまでも>>103
>いや、かこっちゃうほうが正しいとは思うんだけど、クライアント側がなくても
>解釈してくれるなら、ちょっとでもトラフィックを減らしたいと思って。
という書き込みがある事を前提とした批判なのでね。

でもだんだん前提が変わってきて、
・とりあえずJSONの形式を自由に変更したい
・他人とはまったく関わりがない趣味の範囲
という感じになってるんで、どのようにしてもいいと思う。


01291032010/02/28(日) 15:19:03ID:???
>>128
説明を付け足してるつもりではいたんですが、前提変わってすいやせん。

> ・とりあえずJSONの形式を自由に変更したい

そう、誰もつっこまなかったけど、この JSON で返したいってのがそもそもの間違い?
名前をダブルクオテーションで囲まなければ JSON でないのであれば、
それは JavaScript のハッシュオブジェクトってこと?
レスポンスは JSON じゃなくて、JavaScript のオブジェクトを返すサービス、
っていう位置づけなら、後々は他サービスとの連携も可ってことかな。

この場合は to_json じゃなくて Hash クラスに to_javascript ってメソッドの方が
Rails(Ruby)っぽい気がしてきた。
0130nobodyさん2010/02/28(日) 15:32:24ID:???
JSONを返す事自体は悪くないよ。
JSONはJavaScriptの一部ではなく完全に独立したテキストベースのデータファーマットの1つ。
だからto_jsonという名前は正しい。
0131nobodyさん2010/02/28(日) 15:33:58ID:???
あ、タイプミス。データフォーマットだった。
0132nobodyさん2010/02/28(日) 15:39:47ID:???
既存のWebAPIもJSONかXMLで返すものがほとんどだし、JSONはかなりメジャーな形式だと思うよ
01331032010/02/28(日) 15:51:28ID:???
今回の名前をダブルクオテーションで囲っちゃうウソJSON 化は
to_json メソッドをオーバーライドしちゃってたんですが、それだとおいおい
ホント JSON を返したいときに to_json_without_hoge メソッドを
呼ばなければならず。

んで、ウソ JSON の正体は JavaScript のハッシュオブジェクトではないかという
衝撃、というかなんで最初っからわからなかったんだろう的なことに気づき
to_javascript というメソッド名でHashクラスに追加としたほうが適切かなと。
0134nobodyさん2010/02/28(日) 16:34:45ID:???
うざい
0135nobodyさん2010/02/28(日) 18:53:34ID:???
どっちもJSONだよカス
0136nobodyさん2010/02/28(日) 19:26:29ID:???
だからわざわざrailsから外れようとするなら
rubyで自作しろって話ですよ。

極小プログラムに挑戦したら?
01371032010/02/28(日) 19:37:32ID:???
うざくてすまん。
今となっては、
「それじゃあ、JSONじゃなくてJavaScriptのオブジェクトだよ」ってつっこみがあれば
早々に立ち去ってたと思うけど。

>> 135
あーごめん。>133は書き間違えだ。囲っちゃわないウソJSONですね。

RFC4627 に"A name is a string."とあるので、やっぱりJSONにはなれない。
あくまでJavaScript。
0138nobodyさん2010/02/28(日) 21:22:34ID:jks5LGKS
小さなチーム、大きな仕事―37シグナルズ成功の法則
週4日勤務で20時間しか働かない
http://d.hatena.ne.jp/gamella/20100228/1267285692
0139nobodyさん2010/02/28(日) 21:26:24ID:jks5LGKS
Ruby on Railsの作者より:高まった生産性を仕事を余計にこなすためではなく自分の将来に向けて使おう
http://d.hatena.ne.jp/himazublog/20080927/1222445526
37signalsでは最近週4日制をはじめた
0140nobodyさん2010/03/01(月) 02:47:50ID:2KPHCIx/

東京Ruby会議03 の USTリンク集
ttp://d.hatena.ne.jp/wayaguchi/20100301/1267373357
0141nobodyさん2010/03/01(月) 04:28:56ID:2KPHCIx/
demo.redmine.orgはHerokuで動いているらしい
ttp://d.hatena.ne.jp/rx7/20090617/p1

http://demo.redmine.org/
0142nobodyさん2010/03/01(月) 09:06:09ID:FyIKgpnq
東京Ruby会議03は、RailsではなくRubyネタが多かった。
メインのセッションは全部Rails無関係、ワークショップが13並行して
走ったが、その1/3くらいがRailsだっただけかな。
■ このスレッドは過去ログ倉庫に格納されています