【Ruby】Ruby on Rails Part10
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/08/28(土) 19:27:42ID:Er5MNJZv【Ruby】Ruby on Rails Part9
http://hibari.2ch.net/test/read.cgi/php/1266563593/
■参考サイト
<英語>
本家: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/
http://twitter.com/dhh
http://www.loudthinking.com/
0478nobodyさん
2010/10/23(土) 02:02:24ID:???少なくとも無駄な苦労をしなくて済むのは確実
0479nobodyさん
2010/10/23(土) 02:22:06ID:???下手くそな英語の訳文みたいだな
0481nobodyさん
2010/10/23(土) 02:32:01ID:???0482nobodyさん
2010/10/23(土) 07:54:57ID:VcLCHqD4EM-Proxyについて
Rubyで書かれたプロキシです。
EventMachineを使って実装されており、パフォーマンスの劣化は3-5%程度と、超低コストな優良プロキシです。
300行未満のRubyプログラムであり、また、とても拡張しやすくなっています。
ーーー訳者コメント
X-Reproxy-Urlを使って外部リソースをロードバランサーに取ってこさせるのとか、PerlBalではなくて、こっちでやれるかも。いや、それはapache用のモジュールもあるようだからいいか。
http://blog.livedoor.jp/susatadahiro/archives/52334655.html
http://github.com/igrigorik/em-proxy
http://github.com/igrigorik/autoperf
http://www.igvita.com/2009/04/20/ruby-proxies-for-scale-and-monitoring/
nginx
lighttpd
PerlBal
0483nobodyさん
2010/10/23(土) 08:07:16ID:N2kRvVs5Ruby C10K: High Performance Networking - RubyKaigi '09
http://www.slideshare.net/igrigorik/ruby-c10k-high-performance-networking-rubykaigi-09
Ruby Proxies for Scale and Monitoring - igvita.com
http://www.igvita.com/2009/04/20/ruby-proxies-for-scale-and-monitoring/
Art of the Ruby Proxy for Scale, Performance, and Monitoring (RailsConf2009レポート) ? クックパッド開発者ブログ
http://techlife.cookpad.com/2009/05/10/ruby-proxy/
0484nobodyさん
2010/10/23(土) 14:29:48ID:???RMagickを使わずにwidthとheightを取得する方法は無いでしょうか?
ファイルサイズ、content-type、ファイル名などは取得できるのですが、
widthやheightを取得する術が分かりません。
0485nobodyさん
2010/10/23(土) 14:37:09ID:7I6b7du9---
%{model}に%{count}つのエラーが発生しました。
次の項目を確認してください。
* %{attribute}%{message}
* %{attribute}%{message}
---
みたいになってしまいます。
(model,count,attribute,messageが評価されずそのままでてきています。)
gem_version は 2.3.5 で、amatsuda-18nは 0.6.0です。
直すにはどの辺を疑っていけばよいでしょうか?知恵をお貸しください。
0486nobodyさん
2010/10/23(土) 16:31:47ID:???ファイル名やファイルサイズはともかく、HTTPに画像を送る際の縦横のサイズを送るための
取り決めなんてないから、アップロードされたものを何らかの画像フォーマット処理ツールで
調べるしかない。RMagickを使わずに済ますにしても、何か必要。
Hikiは image_size.rb というライブラリを使っていたな。
http://github.com/hiki/hiki/blob/master/hiki/image_size.rb
今はgemもあるらしい。 http://rubyforge.org/frs/?group_id=3460
0487nobodyさん
2010/10/23(土) 16:53:30ID:???bundler使用時、例えばなんですが、
Gemfileに gem 'haml' と書いて、
bundle install vendor/bundle とやると、
hamlがすっぽりvendor/bundleに入ってくれて嬉しいのですが、
hamlにパスが通らないので、コンソールからの haml --rails . が出来ませんよね。
現状、しょうがないので、不本意ではあるのですが、
hamlなど、コンソールからもなにがしかを実行する必要のあるgemだけは
gem install haml として、システム側のgemとして入れるようにしています。。。
これしか方法はないのでしょうか。
どなたか、よりスマートな解決策があれば、教えて下さい。
0488484
2010/10/23(土) 18:09:46ID:???ありがとうございます。
image_size.rb使ってみます。
>HTTPに画像を送る際の縦横のサイズを送るための取り決めなんてないから
うーむ成程、こういう視点から考えられるようになりたい。
0489nobodyさん
2010/10/23(土) 19:47:27ID:???bundleされたgemに含まれるコマンドを実行するには、
$ bundle exec haml --rails .
とする。
0490nobodyさん
2010/10/23(土) 23:03:14ID:???0491nobodyさん
2010/10/23(土) 23:11:25ID:???0492nobodyさん
2010/10/23(土) 23:41:46ID:???今、日本で一番詳しいRails3本はWeb+DB PRESS vol.58だろうし。
0493nobodyさん
2010/10/24(日) 01:10:23ID:???どこがいいの?
0494nobodyさん
2010/10/24(日) 03:47:05ID:???0496nobodyさん
2010/10/24(日) 06:02:07ID:???0497nobodyさん
2010/10/24(日) 06:53:01ID:???0498nobodyさん
2010/10/24(日) 07:40:31ID:???どこがいいの?
0499nobodyさん
2010/10/24(日) 08:37:39ID:???0500485
2010/10/24(日) 09:17:15ID:0nJ7JD9V誰かヒントだけでもお願いします・・・
0501nobodyさん
2010/10/24(日) 10:09:11ID:???0502nobodyさん
2010/10/24(日) 10:56:17ID:???それは、i18n-generatorsのバグだと思う。
config/translations/ja.ymlのcountの部分を修正すれば直ったような気がした
記憶があいまいだが。
%{count}を{{count}}にすれば直るかもしれん
0503485
2010/10/24(日) 11:11:43ID:0nJ7JD9Vネ申ktkr!!!
ありがとうございます! 治りました!
0505nobodyさん
2010/10/24(日) 11:23:07ID:???0506nobodyさん
2010/10/24(日) 12:12:14ID:???NoSQLにはすごく興味あるけど使える奴がいなくて結局いつもMySQLになってしまう。
0507nobodyさん
2010/10/24(日) 13:41:53ID:???MySQLもいいけど、PostgresSQLにトレンドが流れつつある気がします。
Oracleに買収されてからやっぱりMyの存在価値が薄くなってる。
NoSQLは様子見かな。金融系で導入され始めたら本格的な使用が出来る気がする。
0508nobodyさん
2010/10/24(日) 13:56:20ID:???0509nobodyさん
2010/10/24(日) 14:11:36ID:???どっちかというと MySQL 派だけど、
PostgreSQL にトレンドが映っているというのは初めて聞いた。
煽りではなく、そう思った理由があれば書いてほしい
(ユーザ会での出席者でのアンケートで、など・・・)
PostgreSQL は 9 系がこの間出たんだよね。
あと、RDB と NoSQL は同じ土俵のものではない。
NoSQL が RDB を置き換えるわけではないと思う。
0510nobodyさん
2010/10/24(日) 14:33:42ID:???オプソ関係者はみんなORACLEを避けてる
0511nobodyさん
2010/10/24(日) 14:46:48ID:???RailsでJSONを扱うオススメの方法を教えてもらえないでしょうか?
0512nobodyさん
2010/10/24(日) 14:55:04ID:???0513nobodyさん
2010/10/24(日) 15:00:54ID:???0514nobodyさん
2010/10/24(日) 15:07:45ID:???サンクスです!
http://flori.github.com/json/
これですね。さっそくRails3で試してみます。
ちなみに、FirefoxでJson形式を見るには、
http://benhollis.net/software/jsonview/
これが便利そうです。
0515nobodyさん
2010/10/24(日) 15:15:42ID:???postgresSQLはチューニングしなきゃならないが、かなり高速になる。ってー事で最近玄人好みされてると思う。
0516nobodyさん
2010/10/24(日) 16:37:19ID:???いやいやいやいや
activesupport-3.0.1/lib/active_support
の中見なさいよ。
正確にはソースじゃなくてAPIドキュメントの方だが。
0517516
2010/10/24(日) 16:40:10ID:???0518nobodyさん
2010/10/24(日) 16:43:52ID:???ActiveSupport::JSON::Backends
ActiveSupport::JSON::Backends::JSONGem
ActiveSupport::JSON::Backends::Yajl
ActiveSupport::JSON::Backends::Yaml
ActiveSupport::JSON::Encoding
ActiveSupport::JSON::Encoding::CircularReferenceError
ActiveSupport::JSON::Encoding::Encoder
ActiveSupport::JSON::Variable
という並びを見るとエンコードしかできないように見えるが、メソッド名リストを
見ると、ActiveSpport::JSON.decodeもある。
0519nobodyさん
2010/10/24(日) 16:56:29ID:???0520nobodyさん
2010/10/24(日) 17:45:42ID:???ブランドとかプライドとか、不思議なものは捨てて
自分のアプリケーションでベンチマーク取ろうぜ。
俺はデータベース使った事無い。
0521nobodyさん
2010/10/24(日) 19:05:03ID:???ありがとうございます。
さっそくチェックしてみたところ、
contents = URI.parse(url).read
contents = ActiveSupport::JSON.decode(contents)
contents = JSON.parse(contents)
どちらの方法でもデコードができました。
ruby 1.9以上だと require 'json'もいらないみたいです。
0522nobodyさん
2010/10/25(月) 01:35:49ID:???いやいや君全然追ってないでしょ
ORACLEはコミュニティがびっくりするぐらいmysqlに開発リソース割いてるしロードマップも明確にしたし買収以後mysqlの存在感はむしろ増してるんだけそ
適当な印象論でpostgreが優勢とか言っちゃうのはエンジニアとしての資質すら疑うな
0524nobodyさん
2010/10/25(月) 18:18:19ID:K20DS9H/http://blog.kushii.net/archives/1350951.html
http://d.hatena.ne.jp/gamella/20081027/1225119262
0525nobodyさん
2010/10/25(月) 19:08:01ID:???DBから取り出した値はInteger型
こういうケースがよくあると思います。
例えば以下のようなケース
user_id = params[:user_id]
@user = User.find_by_xxx(xxx)
if user_id == @user.id
end
しかしRubyは型を暗黙に変換してくれないので、
このif文は絶対にtrueになりません。
そのため以下のようにしています。
if user_id.to_i == @user.id
end
これで問題無いのですが、Railsらしからぬとても無駄な記述に思えてしまいます。
これは仕方ないのでしょうか?
あるいはもっとスマートな書き方があるのでしょうか?
0526nobodyさん
2010/10/25(月) 20:29:06ID:???迷惑な言語が存在していて、それをありがたく感じてる人もいるらしい。
>>525の例であれば、モデル(DB)としてのuser_idはInteger型なのだから、
フォームから値を取り出す時に正当性検査と(Integer型への)変換を済ませておくのが
Ruby(Rails)らしいコード。
user_id = params[:user_id].to_i # 変数 user_id のデータ型は(String型ではなく)Integer型
0527525
2010/10/25(月) 21:56:45ID:???ご返信ありがとうございます。
確かに明示的に変換するのが正しいコードだとは思います。
ただ、お決まりのコードは極力省いてくれるのがRailsの特徴だと思っていたので
とても不自然に感じました。
paramsから渡ってくる属性とDBから取得した属性が同じ名前であれば、
それは同じ型のはずなので裏で上手いこと処理してくれる、
という方がRailsっぽいと思うのです。
反論っぽくてすいません。Rails使いの方々がどう思っているのか率直に知りたいです。
0529nobodyさん
2010/10/25(月) 22:44:20ID:???@user = User.find_by_xxx(xxx)
if posted_user == @user
とすれば明示的に to_i しなくていいよ。
0530nobodyさん
2010/10/26(火) 00:12:05ID:???@user 〜
0531nobodyさん
2010/10/26(火) 00:32:14ID:???0533nobodyさん
2010/10/26(火) 03:06:58ID:???0535nobodyさん
2010/10/26(火) 09:33:44ID:???tail -f log/development.log しながら
console で User.find_by_user_id(%q|'--update|) とかしてみればいいと思うよ。
0537nobodyさん
2010/10/27(水) 02:42:46ID:???おかげでいろんな事が分かった気がする。
しかしながら、rubyはwindowsユーザーに冷たすぎるよ。
rubyを世界的に広めていきたいのならもうちょっと何とかして欲しい。
0538nobodyさん
2010/10/27(水) 05:04:01ID:???2.3のActiveRecordではcolumnに合わせて変換されてるね
>>537
よくPythonと比較されるけど、単純にWindowsのRuby開発者足りないみたい
Ruby 初心者スレッド Part 38
http://hibari.2ch.net/test/read.cgi/tech/1282781922/962
> 962 名前:デフォルトの名無しさん[sage] 投稿日:2010/10/20(水) 22:35:24
> >>959
> PythonはWindowsでしか動作しない専用のコードが物凄く組み込まれてる
> 彼らはOS依存のコードを大量にパッケージングすることを厭わない
>
> Pythonだからできた、わけではない
> Rubyでできないのは単なるリソース不足
0540nobodyさん
2010/10/27(水) 12:27:42ID:1WAhUTBd例えば、どのへんがwinに冷たいってことになるの?
特に不利を感じたことはないんだが、
なんせwinでしかやってないから、
俺が気づけてないだけなんだと思う。
だから、教えてくれ!
winだと、どのへんで損してることになるんだ?
0541nobodyさん
2010/10/27(水) 13:25:29ID:???formの受け渡しの練習をしてみたら、謎のRounting Errorが。
解決方法を教えてもらえないでしょうか?
※コントローラ
class AlertsController < ApplicationController
def index
end
def show
@name = params[:name]
end
end
※ビュー
alerts/index.html
<% form_tag :action => 'show' do %>
<%= text_field_tag("name") %>
<%= submit_tag "Send" %>
<% end %>
alerts/show.html
<%= @name %>
indexでフォームに文字を入力して、showで表示させたいのですが、エラーとなるのでうす。
0544541
2010/10/27(水) 14:06:05ID:???レスありがとうございます。
コマンドで rake routesをしてみたら、
alerts_index GET /alerts/index(.*format)
{:controller=>'alerts', :action=>'index'
alerts_index GET /alerts/show(.*format)
{:controller=>'alerts', :action=>'show'
このような表示が出ました。しかし、どうすればよいかは分からず。。
0545541
2010/10/27(水) 14:19:08ID:???Railsにはroutingというものがあるらしいので、ちょっと勉強します。。
毎回routeを書かないといけないのかな。。
0546nobodyさん
2010/10/27(水) 14:26:59ID:idCW7kQN:controller/:action/:id
のルーティングがなくなったんだっけか
0547nobodyさん
2010/10/27(水) 14:27:27ID:???あるいは :method => :get にする。
0548nobodyさん
2010/10/27(水) 14:28:12ID:???0549541
2010/10/27(水) 14:33:59ID:???ありがとうございます。
routes.rbに
post "alerts/index"
post "alerts/show"
と書き込むと上手くいきました!
Railsはポスト使う時に、毎回手動でルートを書き込む必要が
あるのでしょうか?
0550nobodyさん
2010/10/27(水) 15:24:00ID:???0552540
2010/10/27(水) 17:02:37ID:???windowsしかやってないから不便に気付いてないのかもしれん。
windowsとlinuxの両環境でrails環境やってみた人の
意見がぜひ聞きたい。
0553nobodyさん
2010/10/27(水) 17:14:35ID:???0555540
2010/10/27(水) 18:03:26ID:???善は急げということなら、
さっさとlinuxに移行したいと思ってる。
というか、それが善だということも、薄々は気づいてる。
なので、最後の決め手として、
>>537のように、「rubyやrailsはwindowsに冷たい」と感じた人が、
具体的にどういった種類の冷たさを感じたのかが知りたい、
と思ったのです。
0556nobodyさん
2010/10/27(水) 18:18:43ID:???0557nobodyさん
2010/10/27(水) 18:36:11ID:W7VQodGGnanofs
ruby
Gree大規模分散ストレージ戦略
http://www.slideshare.net/greetech/gree-5563991
http://labs.gree.jp/blog/2010/10/1926/
0558nobodyさん
2010/10/27(水) 18:48:35ID:???>>537は実際にやってるわけだが、
ほかにレスしてるやつは具体的にはなにも知らないんだから無駄
勝手なイメージや古い情報、思い込みで言ってるだけ
0559nobodyさん
2010/10/27(水) 19:40:51ID:???0560nobodyさん
2010/10/27(水) 22:12:02ID:???0561nobodyさん
2010/10/27(水) 23:48:51ID:???おかげでいろんな事が分かった気がする。
しかしながら、rubyはwindowsユーザーに冷たすぎるよ。
rubyを世界的に広めていきたいのならもうちょっと何とかして欲しい。
0562537
2010/10/27(水) 23:50:06ID:???WindowsのRoRで不満な所
・Cのネイティブコードで書かれているソースがあって、Windows環境で動かない。
・makeコマンド実行時にgemがエラーになる。
・ruby-installerでインストールしないと、devkitがうまく入らない。
・nginx + unicornがwindows環境だとうまく動かない。だから、今でもWEBrick。
・IDEのデバッグスピードがもっさりしている。
・JavaやC#やVBやPHPやPythonなどと比べて、開発環境を整えるまでの時間コストが膨大。
などが個人的な感想です。
ちなみに、開発環境は以下の通りです。
OS:Windows7 64Bit
Ruby:1.9.2-p0
Rails:3.0.1
MySQL: 5.1.51
Netbeans:6.9.1
Webサーバ:WEBrick
0563nobodyさん
2010/10/28(木) 00:08:25ID:???土台をきちんと構築せずにごまかすから後で苦労するんだ
nginx+unicornはやってないからわからないが、
開発だけならwebrickで特に問題ないと思う。
もっさりは確かに困る。逆に言えばもっさりくらいだな。
ドキュメントは英語が多いけど、読めばちゃんと書いてある。
英語が読めて当然とは思わないけど、
やはり翻訳を使ってでも基本的な部分は読んだ方がいい。
0564nobodyさん
2010/10/28(木) 00:42:01ID:???結合テスト以降から Linux に移行して unicorn なり Passenger で動かせば。
0565nobodyさん
2010/10/28(木) 01:30:20ID:???勝手にくっついてくるし、デフォルトではWEBrickが動くんだし
0566537
2010/10/28(木) 01:53:16ID:???だから、ごまかしてはなくRuby、Railsの変化に本が追いついてない気がします。
(参考にしたのは、RailsによるアジャイルWebアプリケーション開発第3版。)
開発環境は本番環境と同じ構成にするのが普通だと思ってました。
単体がWindowsで結合からLinuxだと、少し複雑な環境になる気がします。
そんな開発はアリなのかな。rails採用企業の実態が知りたいです。
mongrel1.1.5はrequireエラーが出てるので、WEBrickメインで使おうと思います。
ここでmongrelの問題に時間をかけると、また時間コストがかかりそうなので。
希望としては、Windowsでpassenger3かunicornを採用してみたい所です。
RoRドキュメントはほとんど見てないので、
http://rubyonrails.org/documentationをざっと確認してみます。
0567nobodyさん
2010/10/28(木) 02:07:30ID:???どうにも上手くいきません。
例えば以下のような場合、
BookモデルとAuthorモデルがあって、
BookをDBに登録した後にAuthorをDBに登録したいが
両方登録できた時のみ成功させたいのでトランザクションにする。
Book.transaction do
@book = Book.new(:title => 'RoRの本')
@book.save!
@author = Author.new(:name => 'aaa')
@author.save!
@book.author = @author
end
こんな感じのコードを書いているのですが、
Author登録前に自分で例外を起こすとBookだけが登録された状態になってしまうのです。
何か考え方に間違っているところはありますでしょうか?
0568nobodyさん
2010/10/28(木) 02:15:56ID:???転職をおすすめする
0570nobodyさん
2010/10/28(木) 03:37:15ID:???GREE でも一部は ruby を使っているのか。
というか naoya さん、はてなからGREEに移ったのか。
0572nobodyさん
2010/10/28(木) 11:18:03ID:lB+5Kgk70573567
2010/10/28(木) 12:43:02ID:???>>571
はい。テーブルは全てInnoDBにしています。
>>572
トランザクションにエラーを知らせるために敢えてsave!を使っているのですがこれは間違ってますか?
0574nobodyさん
2010/10/28(木) 16:51:11ID:???0575nobodyさん
2010/10/28(木) 17:14:12ID:???{"東京"=>" みたいなムダなhtmlが生成されて
まったく解決できずに禿げそうなのですが、解決方法を教えてもらえないでしょうか?
※model
menu['category'] = {
'グルメ' => 'gurume',
'美容' => 'biyou',
}
※view
<%= @menu['area'].each do |key,value| %>
<%= radio_button_tag 'category', value %>
<%= key %>
<% end %>
なぜselect_tagにはoptions_for_selectがあるのに他のものにはないんだ。。
0576nobodyさん
2010/10/28(木) 17:15:39ID:???0577nobodyさん
2010/10/28(木) 17:48:45ID:???重ね同じ不満点
俺は結局devkit入れてなかったわw
当時はプラットフォーム指定mswin32で入らないのは無視してたな
cronで動かすようなバッチも無視
debian系ならaptでコンパイル環境一発で入るのは楽だね。
mswin32のRuby 1.8.7だとRubyGems含めた環境がもっさりなのが一番大変だった。
require 'rubygems'するともっさり、irbももっさり、Railsコンソールももっさり、script/serverももっさり
mongrelのテストサーバーももっさり。
一番遅いのは起動。動作はそこそこだけどやっぱり遅い。
同じマシンの仮想マシンにしたら起動は5倍程度速度アップ、動作はそこそこ速度アップ。
後者は測ってないから適当。
仮想マシンにせよ最近のWeb開発はマシンスペックいるよな。Core 2 Quad世代だとWindowsではきつい
■ このスレッドは過去ログ倉庫に格納されています