【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/
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ではきつい
0578nobodyさん
2010/10/28(木) 17:56:27ID:???>>562ではないが、
肝心のデバッグはIDEでのデバッグはWindowsのときはほとんど必要性なかったな。
Windowsのアプリつくっていた時はそういうIDEでのデバッグが必須だと思っていた。
だけど、RubyやRailsだとscript/consoleやログ表示で大概解決してしまう。
あたりまえだが、テストも書く習慣できたし。
一応、ホストのIDEから仮想マシンのruby-debug-ideだったかにつなごうとしたけどうまくいってないし、
なくても間に合っているから放置してるw
IDEでデバッグが必要になる時点で、実はかなりハマっているので別の解決策を取れという指標にしてる。
Railsのソース読むのはデバッグ中じゃなくてもできるしな。
ちょっとした挙動はドキュメントのソース表示でも見られるし
0579nobodyさん
2010/10/28(木) 18:01:46ID:???0580nobodyさん
2010/10/28(木) 18:08:48ID:???>>577に追加して、Windowsだと面倒なのはUTF-8の入出力かな
特にコンソール。これだけはどうにもならないというのが結論。
コマンドプロンプトがUTF-8の入出力まともにできないのは有名だろうけど。
ログ表示はIDEでカラー表示切って我慢とか、
テストの実行はIDE上で行う(NetBeansはautotestサポートしてたり)とか、
Cygwinのターミナルで動かすと表示はいけるが、
その場合win32アプリで入力が絡むとまともに入力できないとか(下手すると裏で入力待ちで帰ってこない)、
autotestでコントロールコード送れないとか(これはなんとかなる方法あるかも)
これで問題を回避してまともに動けばいいけど、実際はもっさりもっさりなのでストレスMAX
Linuxに実行環境を移したら、これらの不満点がほとんど解決した。
仮想マシンに適当なsshクライアントで繋げば好き勝手できる。
環境を移動したらあっさり解決するとさすがに>>538のような状況にもなろう。
そういえば、デプロイツールのCapistranoもパス文字でバグってて使えなくてパッチあてた覚えあるな
とにかくそういった一つ一つ特有の問題を解決していく時間も必要。
根性とか根気よりも時間。
0581nobodyさん
2010/10/28(木) 18:28:45ID:???ではなく
空フォルダにGemfileファイル作って gem "rails" とだけ書いて
bundle install
でrails本体を入れるやり方って、どれくらい一般的なんでしょう。
いちいち bundle exec rails hoge としはくてはいけなくなりますが、
rails本体が共用でなくなるという点が、より衛生的ではあります。
皆さんはどうされてますか?教えて下さい。
↓bundle installでrailsをいれるというのは、こうゆうことです。
ttp://blog.madoro.org/mn/74
0582nobodyさん
2010/10/28(木) 19:15:24ID:???一時期そうしてた頃もあるんだけど、最近は開発環境では一切合切gemディレクトリに
放り込んで、そこからbundlerに選んでもらうという方針にしてる。
ディプロイ先にはできるだけgemを入れず、vendor/cacheとかかなぁ。
0583nobodyさん
2010/10/28(木) 23:24:04ID:lB+5Kgk7もっとよく出来るプラグインとかないかな?
素のscaffoldはしょぼすぎるし、自分でカスタムscaffold書くのも面倒くさい
0584nobodyさん
2010/10/29(金) 00:03:09ID:???0585nobodyさん
2010/10/29(金) 00:36:45ID:UEaUow4Phttp://d.hatena.ne.jp/shunsuk/20091020/1256038822
app/views/layouts/memos.html.erbは、削除しておいてください。
$ script/generate theme
$ rm app/views/layouts/memos.html.erb
Webシステム開発者に送る便利なテンプレート「Web App Theme」
http://www.moongift.jp/2009/06/web_app_theme/
http://github.com/pilu/web-app-theme
sudo gem install web-app-theme -s http://gemcutter.org
Pluginが広げるRailsの魅力
http://www.slideshare.net/dara/pluginrails
0586nobodyさん
2010/10/29(金) 01:31:49ID:???http://www.smartclient.com/#showcaseApp
0587nobodyさん
2010/10/29(金) 07:44:43ID:???そもそも素のscaffoldの存在価値ってなんだろう?
プロトタイピングかはたまた10分でできる〜用にしか使われてないんだじゃないのか?
管理画面用と割り切っても、標準でpaginationもなければカラムのソートもない
ActiveScaffoldや管理用のプラグインもあるにはあるが
どれもエンドユーザーに触らせるようなものじゃないような
■ このスレッドは過去ログ倉庫に格納されています