[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 15:53 / Filesize : 279 KB / Number-of Response : 987
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【Ruby】Ruby on Rails Part8



1 名前:nobodyさん [2009/09/13(日) 20:49:34 ID:kz4rC4Dx]
■前 Ruby on Rails Part7
pc11.2ch.net/test/read.cgi/php/1241100447/

■参考サイト
<英語>
本家:www.rubyonrails.org
API document:api.rubyonrails.com/
開発者のblog:weblog.rubyonrails.org/
参考wiki:wiki.rubyonrails.org/rails

<日本語>
Rails' wiki: wiki.fdiary.net/rails/

■参考スレ(プログラム板)
Rubyについて Part 37
pc12.2ch.net/test/read.cgi/tech/1251029267/
Ruby 初心者スレッド Part 30
pc12.2ch.net/test/read.cgi/tech/1249687283/

627 名前:nobodyさん mailto:sage [2009/12/30(水) 15:57:14 ID:???]
RubySpec走らせようぜぇ


628 名前:nobodyさん [2009/12/31(木) 06:41:41 ID:0ZeyyLVy]
dhh

@37signals is already running a few minor apps on Rails 3. We've just started playing w/ porting Basecamp. Exciting times!
twitter.com/dhh/status/7208264678

twitter.com/dhh/status/7107817801
Very tentative target date for Rails 3 beta is end of January. But core is staffed with volunteers, so very much subject to change.
about 1 hour ago from Echofon

629 名前:nobodyさん [2009/12/31(木) 06:58:56 ID:0ZeyyLVy]
@sockmonk 1.8.7. Rails 3 requires 1.8.7.
twitter.com/wycats/status/7138079908

dhh

@37signals is already running a few minor apps on Rails 3. We've just started playing w/ porting Basecamp. Exciting times!
twitter.com/dhh/status/7208264678

Very tentative target date for Rails 3 beta is end of January. But core is staffed with volunteers, so very much subject to change.
twitter.com/dhh/status/7107817801

630 名前:nobodyさん [2009/12/31(木) 08:31:33 ID:0ZeyyLVy]
Very tentative target date for Rails 3 beta is end of January. But core is staffed with volunteers, so very much subject to change.
twitter.com/dhh/status/7208225785
dhh

631 名前:nobodyさん mailto:sage [2009/12/31(木) 14:23:44 ID:???]
何度も書くほどの事かね.

dogfooding出来る程度動くようにはなってきたというのはわかった

632 名前:nobodyさん [2009/12/31(木) 22:48:13 ID:0ZeyyLVy]











633 名前:nobodyさん mailto:sage [2010/01/03(日) 01:04:56 ID:???]
railsでleft join whereって使えないよな。
has_manyとかはidしか条件にしないし、他の条件を使えない気がする。

634 名前:nobodyさん [2010/01/03(日) 17:24:17 ID:Kv5gn0C+]
github.com/rails/arel

635 名前:nobodyさん mailto:sage [2010/01/04(月) 00:12:50 ID:???]
>>634
ほほぅ



636 名前:nobodyさん mailto:sage [2010/01/04(月) 00:15:11 ID:???]
>>633
:joins 指定すればいいという話ではなく?

637 名前:nobodyさん mailto:sage [2010/01/04(月) 00:32:56 ID:???]
Railsの勉強で、簡単なブログツールを作っています。
記事のモデルオブジェクト(Post)にコメント数を表すカラム(comment_count)を作成しているのですが、これの更新方法がよくわかりません。
たぶんトランザクションを使って、コメントが保存できたらcomment_countを1増やすという方法になると思うのですが、
以下のようなコードであっているでしょうか。どなたか添削をお願いします。

def add_comment
 # ブログ記事のモデルオブジェクトを検索
 post = Post.find(params[:id]) or raise ActiveRecord::RecordNotFound.new
 # コメントオブジェクトを作成し、記事IDを設定
 comment = Comment.new(params[:comment])
 comment.post_id = post.id
 begin
  # トランザクション開始
  Post.transaction do
   # コメントをセーブ
   comment.save!
   # コメントがセーブできたら、コメント数を1増やす
   post.comment_count += 1
   post.save!
  end
  # エラーがなければ 'OK' を出力
  render :text=>'OK'
 rescue ActiveRecord::RecordInvalid => ex
  # エラーがあれば、エラーメッセージを出力
  errmsg = comment.errors.collect{|arr| arr.join(': ')}.join("¥n")
  response.status = 422
  render :text=>errmsg
 end
end


638 名前:nobodyさん [2010/01/04(月) 01:57:03 ID:14ehE+TL]
無駄が多くて全然railsっぽくない。以下のようにするといいよ。

def add_comment
 # ブログ記事のモデルオブジェクトを検索
 post = Post.find(params[:id]) # raise は明示的に書く必要はない。

 # アソシエーションを利用してコメントオブジェクトをビルド(post_idは自動的に代入される)
 comment = post.comment.build
 # パラメーターでアップデート(うろ覚えなのでシンタックスエラーがあるかも)
 comment.update_attributes!(params[:comment])
end

コメント数はcomment_countカラムを作らずに以下で数えるほうがいいと思うけど。よほど膨大な(100万単位の)コメントがつかない限り。
Comment.count(:conditions => 条件)



639 名前:nobodyさん mailto:sage [2010/01/04(月) 02:01:50 ID:???]
>>636
なるべく生のsql文は使いたくなくて
でもまぁこれが一番手っ取り早いか

640 名前:nobodyさん mailto:sage [2010/01/04(月) 02:08:21 ID:???]
営業能力も上げていかないと技術だけでは35歳以上はこの業界では生き残れないと断言しよう
40歳過ぎにもなれば、営業能力70%技術力30%くらいの割合になるマジで
同じ会社で死ぬまで雇ってもらえるなら別だが
そんな保障はどこにもない


641 名前:nobodyさん [2010/01/04(月) 02:09:27 ID:14ehE+TL]
それに def add comment でなくて、
restfulに書くならばComment Controllerを作って、createアクションで処理する方がいいよ。
before_filter でPost.find(:post_id) を常にしておくべき。
そうすればその情報を使ってアソシエーションに沿ってコメントを作成できる。

642 名前:nobodyさん [2010/01/04(月) 14:14:39 ID:CMnexdc2]
Rails 3.0.pre で遊ぶ準備
sakuro.tumblr.com/post/305322764/rails-3-0-pre


643 名前:nobodyさん [2010/01/04(月) 20:11:46 ID:CMnexdc2]
Getting a New App Running on Edge
weblog.rubyonrails.org/2010/1/1/getting-a-new-app-running-on-edge
So people have been attempting to get a Rails app up and running recently.
I also have some apps in development on Rails 3

644 名前:nobodyさん mailto:sage [2010/01/04(月) 20:48:54 ID:???]
>>637
自習するのは止めないけど、belongs_to の :counter_cache も忘れないで。


645 名前:nobodyさん mailto:sage [2010/01/04(月) 23:22:51 ID:???]
>>639
亀レスだが has_many :people, :foreign_key=> 'original_key_name'
とかじゃダメなのか?



646 名前:nobodyさん mailto:sage [2010/01/05(火) 02:00:40 ID:???]
>>645
おぉ。これでkeyを指定できるようになるのか。便利。

647 名前:nobodyさん mailto:sage [2010/01/05(火) 06:24:05 ID:???]
>>638
どうもありがとうございます。raiseは書かなくていいんですか。なるほどー。

> コメント数はcomment_countカラムを作らずに以下で数えるほうがいいと思うけど。よほど膨大な(100万単位の)コメントがつかない限り。
> Comment.count(:conditions => 条件)

すべての記事を、コメントやトラックバックの多い順でソートする機能を付けようとしています。
その場合、記事ごとにコメント数がついていたほうが簡単かつ高速なので、comment_countカラムを作っています。
とりあえず、トランザクションまわりについては>>637であってるのでしょうか。
詳しい方、お願いします。

648 名前:nobodyさん mailto:sage [2010/01/05(火) 10:27:07 ID:???]
>>647
コメント削除したらコメントカウントのカラムもupdateしないといけない
面倒くせ

649 名前:nobodyさん mailto:sage [2010/01/05(火) 10:42:18 ID:???]
ソートする機能を考慮しても
コメント数はcomment_countカラムを作る必要性がわからん
また高速性を考えるならrailsを使う意味がない、生産性重視ならcomment_countカラムはいらん

650 名前:nobodyさん [2010/01/05(火) 10:57:18 ID:DXl89df8]

イノベーションのジレンマ - Wikipedia
ja.wikipedia.org/wiki/%E3%82%A4%E3%83%8E%E3%83%99%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%82%B8%E

ディスラプティブ技術 - Wikipedia
ja.wikipedia.org/wiki/%E3%83%87%E3%82%A3%E3%82%B9%E3%83%A9%E3%83%97%E3%83%86%E3%82%A3%E3%83%96%E6%8A%80%E8%A1%93

スタートアップの始め方
www.aoky.net/articles/paul_graham/start.htm
テクノロジーの世界では、常にローエンドがハイエンドを食っている。
安価な製品をより強力にするほうが、強力な製品を安くするよりも簡単なのだ。
だから安価でシンプルというところから始めた製品は徐々に強力なものへと成長していき、水が部屋に満ちるように、
「ハイエンド」の製品を天井の方へと押し込めることになる。
Sunはこれをメインフレームに対して行い、IntelはSunに対して行っている。

651 名前:nobodyさん [2010/01/05(火) 14:54:37 ID:s5/1mF78]


Twitter創始者が語るWeb 2.0の要諦 ― @IT
www.atmarkit.co.jp/news/200711/16/twitter.html
Railsを使って2週間でプロトタイプが完成
ウィリアム氏がOdeo内で始めた小さなプロジェクトが「Twitter」だ。
Ruby on Railsを使って2週間で最初の動くバージョンを作り上げたという。


Twitterをはじめると2週間でブログの更新が止まる理由 そしてはじまる(かもしれない)総表現社会 - mizchi log
d.hatena.ne.jp/mizchi/20090711/1247265579



652 名前:nobodyさん mailto:sage [2010/01/05(火) 22:42:48 ID:???]
>>647
transactionの使い方はそんな感じでいいと思う。
do..endのなかでsave!とかupdate_attributes!ね。AR::RecordNotSaved系の
例外が飛んで、transctionがrollbackする。

ただ、検索したり保存したりは >>638 の書いているコードのほうがキレイなので
それを参考にした方がいい。

コメント件数は>>644のいうとおり、counter_cacheを使うと同じようなことを
ARが勝手にやってくれるので、プロダクションコードではそちらを使う方がいいと思う。

あと >>649
> また高速性を考えるならrailsを使う意味がない、生産性重視ならcomment_countカラムはいらん

んなこたない。
counter_cacheなり、それの自作なりを使わないでソートするためには、
Rubyでゴリゴリ書くか、相関サブクエリ使うことになると思うんだけど、
前者はさすがに遅い/無駄だし、後者は面倒なだけだと思うんだけどどうか。

653 名前:nobodyさん mailto:sage [2010/01/06(水) 03:03:28 ID:???]
>>652
コメントカウント出すサブクエリなんてなんて1分もあれば書けるだろ
面倒なのかな?

654 名前:nobodyさん [2010/01/06(水) 12:25:42 ID:3+83O9QS]
Rails 3 in Action
www.manning.com/katz/
Yehuda Katz
MEAP Release: 2009
Softbound print: April 2010 (est.) | pages
ISBN: 9781935182276

1. Building Your First Rails 3.0 Application
2. Overview of the Rails stack(s) + architecture
3. Creating Rails Applications
4. Using DataMapper for Models
5. Using ActiveRecord for Models
6. Other Choices for Models
7. Processing Requests
8. Routing in Rails 3
9. Customizing Views
10. Working on the Client Side
11. Supporting Characters
12. Using the Plugin API
13. Testing Your Applications
14. Deploying a Rails Application
15. Scaling Rails

Appendix A Just enough advanced Ruby
Appendix B The migration story
Appendix C Rails 2 to Rails 3
Appendix D Merb 1 to Rails 3

655 名前:nobodyさん [2010/01/06(水) 16:39:08 ID:3+83O9QS]
www.engineyard.com/blog/author/yehudakatz/



656 名前:nobodyさん [2010/01/06(水) 16:45:50 ID:3+83O9QS]
Rails 3 beta eyed for late January release
www.computerworld.com/s/article/9143084/Rails_3_beta_eyed_for_late_January_release?taxonomyId=1

657 名前:nobodyさん [2010/01/07(木) 09:51:46 ID:acpOW5s0]
David Heinemeier Hansson
Bibliography
www.amazon.com/David-Heinemeier-Hansson/e/B001JS19Y8/


658 名前:nobodyさん mailto:sage [2010/01/08(金) 02:25:13 ID:???]
SQLite3で排他制御する場合どうすればいいですか?

SQLite3にはSELECT FOR UPDATEはないので
find(:lock => true)は使えないですよね。

トランザクションを
BEGIN IMEDIATE TRANSACTION
で開始すればいいのじゃないかと思うんですが
どこに書いたらいいものか分かりません。

659 名前:nobodyさん [2010/01/09(土) 14:09:25 ID:C3iGMVdd]
SELECT FOR UPDATE なんて使わないから、使える

660 名前:nobodyさん [2010/01/09(土) 18:20:07 ID:eVooFF5+]

Phusion Passenger 2.2.9 released
blog.phusion.nl/2010/01/08/phusion-passenger-2-2-9-released/
Fixed compatibility with Rails 3.


661 名前:nobodyさん mailto:sage [2010/01/10(日) 02:02:57 ID:???]
>>659
すいません。
だれ(なに)が使わないので
だれ(なに)が使えるのでしょうか?



662 名前:nobodyさん [2010/01/10(日) 12:04:22 ID:shGxwVTU]
intertwingly.net/projects/dashboard.html

663 名前:nobodyさん [2010/01/10(日) 12:10:39 ID:shGxwVTU]

intertwingly.net/projects/AWDwR4/

664 名前:nobodyさん mailto:sage [2010/01/10(日) 21:44:08 ID:???]
>>659
小学生でもわかる日本語でおねがいします

665 名前:nobodyさん mailto:sage [2010/01/11(月) 11:52:44 ID:???]
馬鹿にはrorは無理。



666 名前:nobodyさん mailto:sage [2010/01/11(月) 17:01:28 ID:???]
config/environment.rb にいろんな設定書くけど、
独自に設定を追加してもいいんでしょうか。
Rails::Initializer.run do |config|
 config.my_value = 'foobar'
end
みたいな。
あと、それを追加したとして、読み出す方法を教えてください。

667 名前:nobodyさん [2010/01/11(月) 19:32:25 ID:yaZxWBJR]
ActiveModel: Make Any Ruby Object Feel Like ActiveRecord
yehudakatz.com/2010/01/10/activemodel-make-any-ruby-object-feel-like-activerecord/

668 名前:nobodyさん mailto:sage [2010/01/11(月) 20:46:07 ID:???]
>>666
config(Rails::Configuration)はRails本体の設定しか受け付けない。
定数使って
MY_CONFIG = { :foo => 'bar', :hoge => 'fuga' }
のようにするのが手っ取り早い。

ちなみにアプリの利用者が変更する必要がない設定は
config/environment.rbやconfig/enviroments/*.rbに書く。
利用者が変えられる設定ならconfig/initializers/*.rbに書く(2.0以降のみ)。

設定が大量になりそうならYAMLファイルで外に出してenvironment.rbなどから読み込むか、
configatronのようなプラグインを使うか。

669 名前:nobodyさん mailto:sage [2010/01/12(火) 00:22:34 ID:???]
質問主ではないが、勉強になった。
ありがとん > 668


670 名前:nobodyさん mailto:sage [2010/01/12(火) 03:14:39 ID:???]
ここでアホな質問してる人らって、わからんことあったらまずここに書いて
のんびりテレビでも見てんの?

671 名前:nobodyさん mailto:sage [2010/01/12(火) 04:35:12 ID:???]
アホな質問続きだが
railsで使用しているpluginのバージョンを一括表示する方法ってない?
script/about みたいな感じで。

672 名前:nobodyさん [2010/01/12(火) 04:46:22 ID:609VTkN+]


Rails and Merb Merge: Plugin API (Part 3 of 6) | Engine Yard Blog
www.engineyard.com/blog/2010/rails-and-merb-merge-plugin-api-part-3-of-6/

673 名前:nobodyさん mailto:sage [2010/01/12(火) 19:07:46 ID:???]
Paginateを使いたいのですが以下のエラーが出ます。
---
undefined method `total_pages' for #<Array:0x5bcc4d8>

Extracted source (around line #42):
42: <%= will_paginate @items %>
---

scaffoldで新しくひな形を作り、

environment.rb の一番下に require 'will_paginate'

index.html.erb の一番下に <%= will_paginate @items %>

pages_controller.rb に
def list
@items = Item.paginate :page => params[:page], :per_page => 10
end

これらを追加しただけなのですが、何が原因でしょうか。

674 名前:nobodyさん mailto:sage [2010/01/12(火) 20:02:14 ID:???]
質問させてください。

テストサーバー(staging環境)用にproduction環境でRailsアプリを動かしているのですが、
エラーが出たときにサーバーにもぐっていちいちlog/production.logを見るのが面倒です。
また、サーバーのログイン権限が無い開発者にもローカルの開発サーバー(webrickやmongrelのdevelopment環境)のように
エラー内容を人目でわかるようにしたいのですが、そのようにエラーを表示する方法はないものでしょうか?

675 名前:nobodyさん [2010/01/12(火) 20:27:20 ID:4XZzyMEc]
>>666
configatron
www.moongift.jp/2008/09/configatron/



676 名前:nobodyさん mailto:sage [2010/01/12(火) 22:54:24 ID:???]
>>673
なぜpages_controller.rb? その説明だけだと、items_controllerになりそうな感じだけど。

677 名前:nobodyさん mailto:sage [2010/01/12(火) 22:57:41 ID:???]
>>671
これ使うとか。自分はまだ使ったことないけど。
github.com/grosser/tracked_plugins

>>673
ヘルパーメソッドのwill_paginateに渡すのはArrayじゃなくて、
paginateの戻り値のWillPaginate::Collectionじゃないといけない。
なので、コントローラかビューのなかで@itemsをArrayにしちゃってないか確認してみて。

>>674
・Exception Logger:DBにエラーを保存してアプリ上で閲覧
・Exception Notifier:エラーをメールで送信
・Syslogに記録:blog.s21g.com/articles/229
・Clarity:ログ監視ウェブアプリ www.moongift.jp/2009/11/clarity/

678 名前:nobodyさん [2010/01/14(木) 21:03:02 ID:MmCuc8fs]

Do One Thing for Rails 3 on January 16th and 17th
railsbridge.org/news_items/10

679 名前:674 mailto:sage [2010/01/14(木) 21:35:26 ID:???]
>>677
たくさんありがとうございます!

一番下の見ていて、webでログ監視すればいいのかって気づいて
tailコマンドのphp版設置してみました。部内LANサーバーなので問題ないです。
php1ファイルで設置らくちんw ちょっと不便ですが、致命的になるまではこれで試してみます。
jQueryとPHPでLinuxのtailコマンドを実装する - EC studio 技術ブログ
techblog.ecstudio.jp/tech-tips/phptail.html

680 名前:nobodyさん mailto:sage [2010/01/15(金) 16:09:17 ID:???]
MYSQLで以下のようなテーブルを使っています。
| id | name | email | check(boolean型) |

restful_authenticationプラグインのsignupでユーザーを新規登録した時、
"check"に自動的に0の値を入れたいのですがどのようにすれば良いでしょうか?

681 名前:nobodyさん mailto:sage [2010/01/15(金) 17:33:21 ID:???]
スキーマ定義を触れるならMySQLのcreate tableのほうで、
checkカラムにデフォルト値0を設定しておけばいいと思う。
create/save時に未指定なら0が入る。
あとはbefore_saveとかafter_initializeとかのフック。


682 名前:nobodyさん mailto:sage [2010/01/16(土) 04:57:42 ID:???]
>>680
はてなのタケルンバさんのblogで丁寧にまとめられていますよ

683 名前:nobodyさん mailto:sage [2010/01/16(土) 20:30:35 ID:???]
基本的にJava屋で、今年からRailsをやってます。

find_by_sqlってのを見つけた瞬間、

find_by_sql("select col1, col2 from table")

って感じで使いまくってんだけど、これっていいのだろうか?
だっせー、かっこわりーって思われないだろうか?

684 名前:nobodyさん mailto:sage [2010/01/16(土) 20:37:30 ID:???]
求めるタスクがこなせてるならいーんじゃない?


685 名前:nobodyさん mailto:sage [2010/01/16(土) 21:25:58 ID:???]
>683
ダサい。
なんでリファレンスをちゃんと読まないんだ。自称Java屋のくせに。



686 名前:nobodyさん mailto:sage [2010/01/16(土) 22:29:46 ID:???]
>>683
ほんとにその程度のSQLで使ってるのなら、
ださいとかじゃなくてありえない

687 名前:nobodyさん mailto:sage [2010/01/16(土) 23:25:29 ID:???]
もう転職考えた方がいいレベル

688 名前:nobodyさん mailto:sage [2010/01/17(日) 00:01:02 ID:???]
>>683
>find_by_sql("select col1, col2 from table")

あれ、Table.find() って col1, col2 の指定ってできたっけ?
できなかったと思うから、自分もfind_by_sqlよくつかうよ。



689 名前:nobodyさん mailto:sage [2010/01/17(日) 00:04:41 ID:???]
外のカラムが不要な場合は Table.find(:all, :select => 'col1, col2')


690 名前:nobodyさん mailto:sage [2010/01/17(日) 00:05:44 ID:???]
うおっ

× 外(ほか)
○ 他(ほか)


691 名前:nobodyさん mailto:sage [2010/01/17(日) 03:56:17 ID:???]
タケルンバに失笑されるレベル
Javaフレームワークは使ったことないんだろか


692 名前:nobodyさん mailto:sage [2010/01/17(日) 10:33:43 ID:???]
>>688
間違えた、find_by_sql()じゃなくてActiveRecord::Base.connection.select_rows(sql)だった。
group byやhavingが入るようなsqlだとこっちのほうが楽なんだけど、そんなことない?

693 名前:nobodyさん mailto:sage [2010/01/17(日) 10:41:10 ID:???]
AR::Baseとして取り出す必要がないならそれも手ではある。


694 名前:nobodyさん mailto:sage [2010/01/17(日) 11:30:47 ID:???]
パフォーマンス(笑)のためだったりするんだろうか。

695 名前:nobodyさん [2010/01/17(日) 16:13:12 ID:mYKzzqeT]
683です。

なるほど、やっぱりダサいのか
ちなみに例に上げたのは簡単なやつだけど
実際に使ってるのは、サブクエリーが絡むような複雑なやつなんだけどね

>> 691
Hibernate使ってたけど、あまり好きじゃないね

>> 694
find_by_sqlの方が、パフォーマンスよくなるん?



696 名前:nobodyさん [2010/01/18(月) 09:03:43 ID:BApO165G]

日本の富豪40人(2010年) - フォーブス長者番付・億万長者ランキング
memorva.jp/ranking/forbes/201001_japan_richest40.php
田中良和 グリー創業者 IT 32 1.60 1456億円
笠原健治 ミクシィ創業者 IT 34 0.72 655億円

697 名前:nobodyさん [2010/01/19(火) 13:32:36 ID:aU7LUmun]
passengerでrails動かしたいのですが、
DocumentRootにアクセスしてもdispatcher.fcgiのソースが表示されてしまいます。

これって正しくモジュールが読み込まれてないからなんでしょうか。
httpd.confにはLoadModuleもしてるしapacheのエラーは出てません。
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9
PassengerRuby /usr/bin/ruby

どなたか原因解明の手がかりwご存知の方ご教授願います。

698 名前:nobodyさん mailto:sage [2010/01/19(火) 23:30:34 ID:???]
.htaccessはどうなってる?

699 名前:nobodyさん mailto:sage [2010/01/20(水) 16:17:25 ID:???]
railsを勉強しようと思うんですが、初心者向けで
お勧めの本はありますか?あるいは、これは読んで
おくべき本でも構いません。

700 名前:nobodyさん mailto:sage [2010/01/20(水) 17:16:39 ID:???]
ちょっと古いかもしれないけど

かんたんRuby on RailsでWebアプリケーション開発
著者 arton さん
ttp://www.amazon.co.jp/dp/4798111570

701 名前:nobodyさん mailto:sage [2010/01/20(水) 17:53:46 ID:???]
>>699
ム板で回答しておいたのでそれを貼っときます。

Ruby 初心者スレッド Part 33
pc12.2ch.net/test/read.cgi/tech/1259990485/804

804 名前:デフォルトの名無しさん[sage] 投稿日:2010/01/20(水) 16:21:54
>>800
初心者が最低限これだけあればまずはなんとかなる!って書籍を3つ。
というか俺が実際にRails初心者レベルで仕事で使った本

・RailsによるアジャイルWebアプリケーション開発
www.amazon.co.jp/dp/4274067858/

・Ruby on Rails 逆引きクイックリファレンス Rails 2.0対応
www.amazon.co.jp/dp/4839928266/

・Railsレシピブック 183の技
www.amazon.co.jp/dp/4797336625/

あとは、webサイトだけど公式のガイド。ちょっとしたわからんことはまずこれ見たら大体すむ
Ruby on Rails guides
guides.rubyonrails.org/

毎回聞かれてるんで、Railsスレテンプレに入れといていいと思うんだ・・・

702 名前:nobodyさん mailto:sage [2010/01/20(水) 17:58:26 ID:???]
ついでに質問いいでしょうか?

script/serverで開発用のmongrelなどを立ち上げた場合は、
動的に読み込んでくれているためか大概は開発中にファイルの編集後でも
コードの反映はサーバーを立ち上げ直さずにブラウザのリロードで済みますよね?

こういうのをscript/consoleでする方法ってないもんでしょうか?
script/consoleの再起動はそんなに重くないとはいえ、何回もやってたらけっこう面倒です。
再度requireする?のがよいんでしょうか?

703 名前:nobodyさん mailto:sage [2010/01/20(水) 17:58:49 ID:???]
>>699
最近、Head First Railsて本の翻訳が出てて、洋書を読んだ感じだとだいぶよかった。
Rails 2.3にも対応している唯一?の本なので、独特のテンションが嫌いじゃなきゃかなりオススメ。

704 名前:nobodyさん mailto:sage [2010/01/20(水) 18:50:18 ID:???]
質問させてください。

コントローラーのbefore_filterのような感じで、レンダリング前にメソッドを実行するようなフィルタは定義できないものでしょうか?
layout/application.html.erb 内でコントローラーのメソッドを(ヘルパー化して)呼ぶしか無いでしょうか?

705 名前:704 mailto:sage [2010/01/20(水) 18:57:33 ID:???]
> layout/application.html.erb 内でコントローラーのメソッドを(ヘルパー化して)呼ぶしか無いでしょうか?
これダメでした。

ヘルパー内で @hoge = 1234 のようにしてもerbの方に反映されませんね…。
layout/application.html.erb の最初の行にロジックを直書きして対処しました。
何かいい方法ないもんですかね



706 名前:nobodyさん mailto:sage [2010/01/20(水) 19:46:07 ID:???]
>>699
Head First Railsが今一番新しくて初心者向けの本、オススメ。
これでわからなかったらRailsは諦めて別なのをやった方がいい。

あと
RailsによるアジャイルWebアプリケーション開発の第三版がオススメ
第二版と初版は古いバージョンのRails用だから間違って買うと泣くはめになる。



707 名前:nobodyさん mailto:sage [2010/01/20(水) 19:47:15 ID:???]
Rubyスレで質問して、Railスレ逝けと言われて来ました。

今回初めてRubyを仕事で扱うことになり、
RailsによるアジャイルWebアプリケーション開発のT部を読んで
Smarty使って、PHPで開発するのとそう変わらないなと思い、
本ちゃんプログラムの解析にかかったのですが・・・

・ controllers,models,viewsともにjsファイルばかり。
・ ブラウザでソースをみたら、ログイン画面なのに1万行近くソースがある。
・ 画面遷移しても、URLは変わらない。
・ サーバーとクライアントのソースがある?

等、ちょっと見かけたことのない構成でした。
こりゃわからんと思い、参考書の続きを読もうとしましたが、
そもそも参考書読んでわかる内容なのか疑問を持ちまして・・・

そこで、質問なのですが
1.上記のような構成はRailsでは一般的で初心者レベルの話
2.それなりに高度な技術で初心者が参考書を読んだ程度で
  太刀打ちできるレベルの内容ではない
3.製作者が変態。そんな作り聞いたことがない。まず見かけない。

いずれですか。
1なら参考書読んで調べます(キーになる単語を教えてくれると助かります)
2ならダメぽと上に報告します。
3なら・・・頑張ります。

以上、教えて下さい。。。

708 名前:nobodyさん mailto:sage [2010/01/20(水) 19:49:37 ID:???]
あとRails始めるなら
RSpecも同時に調べておいた方がいい。
BDD、TDDなどの開発手法を要チェック。
cucumberも

709 名前:nobodyさん mailto:sage [2010/01/20(水) 19:51:53 ID:???]
>>707
>>706

710 名前:nobodyさん mailto:sage [2010/01/20(水) 19:58:41 ID:???]
>>707
たぶんほとんど全機能をAJAXで実装しているんじゃないかね。
Railsがその中でどう使われているかは質問だけでは分からないけど…


711 名前:nobodyさん mailto:sage [2010/01/20(水) 20:38:09 ID:???]
>>710
ありがとうございます。
確かに、ブラウザの戻るボタンがグレーアウトしてる等
思い当たる節はあります。

AJAXを使用しまくっているという前提に立ってもう一度
解読してみます。

712 名前:nobodyさん [2010/01/20(水) 22:19:08 ID:Qj1mXafK]
>>702
reload!

713 名前:nobodyさん mailto:sage [2010/01/21(木) 00:05:32 ID:???]
>>704
レンダリング前ってつまりcontrollerのアクション内がそうだけど、
ビューのレンダリングのタイミングで処理したい理由は?

>>707
これだよね?
www.amazon.co.jp/dp/4274067858/

ソースコード↓を見ても、Ajaxなんて使ってないけど。
www.ohmsha.co.jp/data/link/978-4-274-06785-3/

第1版しか読んでないけど、最初から全部Ajaxで作るみたいな珍妙な本ではないはず。

714 名前:nobodyさん mailto:sage [2010/01/21(木) 00:14:02 ID:???]
>>713
本で学んだ後「本ちゃんのプログラム」にとりかかっている、と解釈した。


715 名前:704 mailto:sage [2010/01/21(木) 08:26:59 ID:???]
>>713
ありがとうございます。

layouts/application.html.erbのサイドバー内に
サイドバーなどにDBからクエリーしてきた最新の結果を常に表示したい、という感じです。

例えが難しいのですが、例えば睡眠時間を記録するサイトで
サイドバーに今日の睡眠時間、といったような数値を表示したいとします。
その場合、application_controllerにbefore_filterかまして
毎度呼ばれるのメソッド内にて今日の睡眠時間を取得する処理を書くと、
コントローラー内で処理をする前の数値を取得してしまいます。
コントローラー内で処理をした後の数値を表示したいのです(つまりできるだけレンダリング前に)。

なので、layouts/application.html.erbの先頭に、
今日の睡眠時間を取得する処理を書いちゃえ!ってことなんですが、
(できるだけモデル依存部はモデルに書くとしても)そういうロジックをviewに各のはどうなんだ、と思った次第です。



716 名前:nobodyさん mailto:sage [2010/01/21(木) 08:32:44 ID:???]
>>707
適当に予想します。

jsばっかり=フロントエンドがAJAX(JavaScript)、バックエンド処理がRails
(それでもmodelsがjsばっかりはない気が?)
JS(AJAX)がクライアント処理、サーバーがRailsと見た。

RSSリーダーのOpen Fastladder(Livedoor ReaderのRails実装でソース公開されてるやつ)
みたいなのをイメージしたんだけど違うかな。
つまり、RailsでwebアプリのAPIをガリガリ書いて、JavaScriptでガワを作るような構造。

まずは、テストコードを読むことから始めたらどうかな?
ちゃんとしたアプリならテストがたくさん書かれているはずなので、
どんな感じにモデルを扱っているかとか仕組みがわかるはず。

717 名前:nobodyさん mailto:sage [2010/01/21(木) 09:21:00 ID:???]
>>715
after_filterじゃいかんの?

718 名前:nobodyさん mailto:sage [2010/01/21(木) 11:03:39 ID:???]
scaffoldした時のshowアクションの挙動を止めたいんですが、何か方法はありますか?

新しい独自のアクション(hoge)を追加したときに、コントローラ名/hogeというアドレスに
アクセスすると、showアクションでIDがhogeという風に動作してしまいます

route.rbにて:exceptや:onlyなどを用いてshowアクションを取り除くようにしてみましたが、いずれも駄目でした

719 名前:nobodyさん mailto:sage [2010/01/21(木) 19:03:10 ID:???]
migrationの質問です。

DBのmigrationでself.downに元に戻す処理を書くと思うのですが、
カラムの追加や変更等簡単な処理は元に戻す処理は簡単にかけるのですが、
例えば、仕様変更であるキーの重複するレコードを削除するとか、その処理を元に戻す場合だと
処理が複雑で簡単には元に戻せなかったりしませんか?

そのような場合、self.downをどのように書いたものでしょうか?
self.upで変更するレコードを外部ファイルにまるごと(mysqldumpとかで)ダンプして、
self.downで戻すときはダンプしたのを(mysqlコマンドに)つっこむとかそういうったことしないといけないものなのでしょうか?

今は、整合性が取れなくならない場合(カラムとかをいじらないとか)で元に戻す処理が複雑な場合は、
self.downを書かなかったりしますが、どうしたものかなーと。

運用サーバーの方ではcapistranoでデプロイでdb:migrateをかけるときには
自動でmysqldumpするようにしかけてあるのでバックアップ自体は大丈夫なのですが・・・

720 名前:nobodyさん mailto:sage [2010/01/21(木) 19:22:34 ID:???]
>>718
rake routesしてルーティングを確かめるんだ!!

721 名前:707 mailto:sage [2010/01/21(木) 22:01:06 ID:???]
>>716
>jsばっかり=フロントエンドがAJAX(JavaScript)、バックエンド処理がRails

そんな感じでした。
フロントエンドで、SproutCore(始めて知ったのですが)を使用してました。
サーバーがRailsで、作りとしては、
最初にガサっとサーバーからデータを取ってきて、
フロントエンドで加工して使いまわして、
必要なときだけサーバーとデータをやり取りする感じでした。

>(それでもmodelsがjsばっかりはない気が?)
クライアント側を見ていました。
SproutCoreの構成がRailsによく似てたので。。。
サーバー側では、ちゃんとrbファイルがありました。

また、ブラウザでソースみたら1万行近く云々と言っていたのは
どうも、SproutCoreはビルドできるらしく、1つに固められた
rhtmlファイルのソースを閲覧していたみたいです。

今、試しに元のソースをビルドしようとしたら、文法エラー
undefined local variable or method 'output'
でビルドに失敗したので、このソースは本当にビルドできるのか
先方に確認中です。

まさかとは思いますが、Windowsではビルドできない(Ruby1.8.6.111)
なんてことはないですよね。。。

また何か進展がありましたら、報告させて頂こうと思ってます。
ありがとうございました。

722 名前:nobodyさん mailto:sage [2010/01/22(金) 01:43:39 ID:???]
>>715
いまのところ rails 標準にはないので、github.com/xtoddx/before_render のようなのを使うしか。
before_renderで検索するとこれの他にもいくつか実装が見つかる。

>>718
map.resources :items, :collection => [:hoge]
などと書けば良いかと。
詳しくはこの辺で d.hatena.ne.jp/zariganitosh/20080203/1202091772

723 名前:nobodyさん mailto:sage [2010/01/22(金) 01:57:31 ID:???]
>>720
なるほど
showに関するmapが先に呼び込まれていて、そちらが優先されていることがわかりました
自作アクションに関してconnectを使い、これをshowよりも先に記述するとうまくいきました
ありがとうございました

724 名前:nobodyさん mailto:sage [2010/01/22(金) 02:05:07 ID:???]
>>722
配列でアクションを指定するのですね
以前は以下のように指定していたのですが、これが原因だったみたいです
map.resources :items, :collection => {:hoge => :get}
これを先程のように配列指定にしたらすんなり解決しました
ありがとうございます

725 名前:nobodyさん mailto:sage [2010/01/23(土) 05:44:49 ID:???]
>>721
> まさかとは思いますが、Windowsではビルドできない(Ruby1.8.6.111)

そういうことって普通にあるよ。Railsプロジェクトならなおさらじゃないかな。
Rails開発はWindows環境はマイナー環境だと思うのでちゅうい
そういうときは、coLinuxとかVMWare使う
あとはRuby 1.8.7に上げてみるとか。



726 名前:704 mailto:sage [2010/01/23(土) 05:49:49 ID:???]
>>715
ありがとうございます。

実はあの後、layouts/appliacation.html.erbの先頭に @hoge = hogehoge のように書くと
他のyieldするerbからは参照出きなくて困っておりました。

before_renderでgithub等あさってみます。すでにあるということは需要はある要望なんですねw

>>717
after_filterだと変数参照出きませんでした。レンダリング後によばれるのかな?うーんん。

727 名前:nobodyさん mailto:sage [2010/01/23(土) 09:43:12 ID:???]
after_filterは、ページ全体をgzip圧縮するとか、携帯向けにShift_JIS+半角仮名
にするとかだねー。







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<279KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef