【Ruby】Ruby on Rails Part8
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/09/13(日) 20:49:34ID:kz4rC4Dxhttp://pc11.2ch.net/test/read.cgi/php/1241100447/
■参考サイト
<英語>
本家: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/
■参考スレ(プログラム板)
Rubyについて Part 37
http://pc12.2ch.net/test/read.cgi/tech/1251029267/
Ruby 初心者スレッド Part 30
http://pc12.2ch.net/test/read.cgi/tech/1249687283/
0552nobodyさん
2009/12/12(土) 08:15:13ID:???戻るボタンからアクセスされたら
元のページにForwardするjavascriptを埋めておく
0553nobodyさん
2009/12/12(土) 10:37:46ID:???自分は、よく更新されるファイルをこれで最新版返すようにしたよ。
0554nobodyさん
2009/12/12(土) 11:08:16ID:???なんで戻らせたくないのかは書いてないが、
戻るボタンを押すとなんたらかんたらってメッセージが出るからじゃないのか?
0555527
2009/12/12(土) 12:40:11ID:???ああ!そういうときにjoinsとかinclude使うのか。
SQLとかの知識少ないせいか最初、意味分からんかったw
サンクサンクス 試してみます
0556nobodyさん
2009/12/12(土) 12:42:12ID:???0557nobodyさん
2009/12/12(土) 18:09:44ID:???0558nobodyさん
2009/12/13(日) 19:52:52ID:???商用フレームワークとかだと当たり前に機能有ったりする。rorなら自前で用意するしかない。
金融系はちゃんと検出して、戻るボタンが押されましたとか表示するね。
0559nobodyさん
2009/12/13(日) 23:56:52ID:???ユーザを無能のクレーマーと想定して作るのが生産性下げてると思う。
0560nobodyさん
2009/12/14(月) 00:11:20ID:???ダグラス・アダムスの警句は真だ。
0561nobodyさん
2009/12/14(月) 01:29:59ID:???0562nobodyさん
2009/12/14(月) 02:24:38ID:???なわけない。
http://www.google.co.jp/m/search?hl=en&q=Evil+Back+Button
日本人が気にするようなレベルはその先の話。
つまり「◯◯で大丈夫ですよ」と言われたら米国人は安心するが、
日本人はその処理の信頼性を調査する。
0563nobodyさん
2009/12/14(月) 14:08:42ID:o/Pytjxa>金融系はちゃんと検出して、戻るボタンが押されましたとか表示するね。
戻るボタン自体は受け付けてくれないと
本当に戻りたいときに困るよなぁ
0564nobodyさん
2009/12/14(月) 14:28:04ID:???ajax でページ移動が一切起こらない設計にするべき
0565nobodyさん
2009/12/14(月) 18:20:43ID:???バイナリにしてしまった方がいいと思うんだ。
0566nobodyさん
2009/12/14(月) 18:40:53ID:???バックエンドはRailsにすればこのスレの範疇w
全部Flashでもいいと思うが一般のwebサービスだとpermalinkとかないとちょっと困るな
0567nobodyさん
2009/12/14(月) 18:47:01ID:???認証プラグインAuthlogicを勉強してみた - MothProgのうしろがわ
http://d.hatena.ne.jp/mothprog/20090331/1238494900#c
Authlogicを入れてみているのですが、こちらのページでは下記のように
current_userのような現在のユーザーを取得する処理をapplication_controllerにおいています。
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.user
end
上記のように書いてみてうまく行ったのですが、
別のモデルからこのメソッドにアクセスしたいため、Userモデルに置きたいと考えています。
しかし、モデルに置いてUser.current_userなどのように取得する場合、
def current_user
return @@current_user if defined?(@@current_user)
@@current_user = current_user_session && current_user_session.user
end
などのようにクラス変数に格納するようにすると何故かうまく動作してくれません。
たぶん、Railsのサーバーの場合、モデルのクラス変数が初期化されないのだと思うのですが、
この場合の対処法はありませんでしょうか?
0569567
2009/12/14(月) 18:49:37ID:???def self.current_user
return @@current_user if defined?(@@current_user)
@@current_user = UserSession.current_user_session && UserSession.current_user_session.user
end
0570534
2009/12/15(火) 12:11:56ID:???0571nobodyさん
2009/12/15(火) 17:23:18ID:???0572nobodyさん
2009/12/15(火) 23:01:42ID:???0573nobodyさん
2009/12/15(火) 23:48:27ID:???仮ページにリダイレクト、クライアントが改めてリクエストしてくるときに、
リクエストにそのクッキーが入っているかを見る。
で、必要なら仮ページから元のページにリダイレクトし直す。
とかだろうか?
0576nobodyさん
2009/12/16(水) 11:59:09ID:???商用フレームワークなら当たり前についてる機能だ。
rorは自力でがんばれ。
フラッシュは最近もセキュリティの問題が発見されたし脆弱過ぎる。企業とか無効にしてる所も多いしな。後はアイフォンが非対応でマカが騒ぐとか。グーグル携帯使えでおkだが。
0577534
2009/12/16(水) 16:10:13ID:???0579nobodyさん
2009/12/17(木) 15:38:45ID:???0580nobodyさん
2009/12/17(木) 16:53:09ID:???現在、あるサイト (http://www.foo.com) をRailsでつくりました。
で、それの管理画面を https://securesite.com/foo/admin にしようとしています。
そのために、以下のような設定をhttpd.confに追加しました。
ProxyRequests Off
ProxyPass /foo/images !
ProxyPass /foo/stylesheets !
ProxyPass /foo/javascripts !
ProxyPass /foo/ balancer://railsapp/
ProxyPassReverse /foo balancer://railsapp/
<Proxy balancer://railsapp>
BalancerMember http://127.0.0.1:8000 loadfactor=20
BalancerMember http://127.0.0.1:8001 loadfactor=20
</Proxy>
これで動くようにはなったんですが、問題があります。
(つづく)
0581nobodyさん
2009/12/17(木) 16:56:09ID:???・https://securesite.com/foo/admin/ にリクエストがあった場合、
Rails には /admin/ へのリクエストとして届くようです。
そのため、'/foo' は無視して
class AdminController < ApplicationController
def index
end
...
end
map.resources :admin
とする必要があります。
・しかしこれだと admin_path() が '/admin' を返すのです。
そうではなくて admin_path() は '/foo/admin' を返すようにしたいのですが、できますか。
・あるいは、Railsでは
map.namespace :foo do |x|
x.resources :admin
end
として、mod_proxy_balancerのほうで http://securesite.com/foo/admin へのアクセスを
Rails に /foo/admin へのリクエストとして渡せることができればいいんですけど、
Apacheのマニュアル読んでも分かりませんでした。そんな設定を知っている人がいたら教えてください。
0582nobodyさん
2009/12/17(木) 23:10:49ID:???サブディレクトリ下で Rails 2.3 を動かすときの注意点
http://www.yohasebe.com/2009/5/30/rails23/
0583nobodyさん
2009/12/18(金) 18:46:13ID:???ソースを読むならここを読めというのがあれば教えてください。
バージョン:Raisl2.3.5
0584nobodyさん
2009/12/18(金) 22:24:46ID:???プロセスの生き死にの管理が面倒。
いつの間にかささってレスポンス返さなくなったときに、
それを発見して、killして、新しいプロセスを立ち上げるというのを
大抵は自前でどうにかしないといけない。
ウェブサーバを落としても、プロセスは生きてたりするしね。
0585nobodyさん
2009/12/18(金) 22:27:39ID:???class ApplicationController < ActionController::Base
def index; raise; end
end
とでもして、ログに出るスタックトレースにしたがってソースを読めばいいかと。
0587nobodyさん
2009/12/19(土) 08:50:16ID:???でもruby以外にpythonやマイナーな言語で書かれたものとか混合しようとするとFastCGI以外になさそうなんですよね
0588nobodyさん
2009/12/19(土) 15:47:38ID:???http://pc11.2ch.net/test/read.cgi/php/1141214874/
【fcgi】FastCGI 総合スレッド
http://pc11.2ch.net/test/read.cgi/php/1149505269/
【激速】mod_perl SpeedyCGI FastCGI【激速】
0589nobodyさん
2009/12/20(日) 09:19:26ID:???自動再起動機能もあったろう
0590nobodyさん
2009/12/20(日) 09:21:27ID:???NetBeansなどIDEでブレークポイントし掛けてソース追っていく方法はあるよ。
俺はRailsのデバッグ、というかソース追って読むの挫折したw
method_missingとかのせいか遷移がわけわからん。
0591nobodyさん
2009/12/21(月) 19:39:55ID:fEey4yBhRails 3 in Action
http://www.manning.com/katz/
Deal of the day for December 21, 2009
Megadeal! 50% off all ebooks
http://archive.constantcontact.com/fs043/1101335703814/archive/1102861452175.html
0592nobodyさん
2009/12/21(月) 22:14:09ID:fEey4yBh0593nobodyさん
2009/12/23(水) 18:38:55ID:???Merbだとそれ用の例外を投げるという実にわかりやすい方法があったのですが。
ちなみにRails2.3.5です。
0594nobodyさん
2009/12/23(水) 19:02:40ID:???としてもよいけど、例外単位でよければ以下のように。
ActionController::Base.rescue_responsesに例外クラス名とステータスを登録する。
たとえば
ActionController::Base.rescue_responses['ArgumentError'] = :bad_request
デフォルトで ActiveRecord::RecordNotFound なら :not_found みたいなのが登録さ
れている。
通常の例外時の動作は public/STATUS.html を返す(render_optional_error_file)
だけなので、これを変更したければ rescue_action_in_pubic などをカスタマイズする。
なお、development だと、そのままでは開発向けエラー画面が出るので、
エラー画面自体の確認をしたいときは config/environments/development.rb の
consider_all_requests_local を false にし、ループバック(localhost や 127.0.0.1)以
外のアドレスでサーバにアクセスする。
ソースは action_controller/rescue.rb
0597nobodyさん
2009/12/24(木) 00:22:36ID:???ssl通信等を使用する方法はどのあたりを調べるとわかるでしょうか?
0600nobodyさん
2009/12/24(木) 20:39:55ID:???0602nobodyさん
2009/12/25(金) 19:50:30ID:???例えばViewで,
<div id="sample">
<%= select("foo", "bar", data) %>
<%= observe_field(:foo_bar, {
:update => :baz,
:on => 'change',
:url => { :action => :some_action },
:with => "'foo_bar=' + value"}) %>
</div>
となっている場合,ブラウザのロケーションバーから直接localhost:3000/controller/some_actionへアクセスされた際に,
他のページへリダイレクトさせたいです.
コンボボックスの選択変更によりsome_actionが起動した際には,リダイレクトしないようにしたいです.
some_action内にそのままredirect_toを書いてしまうと,コンボボックスの選択変更でsome_actionが起動したときにもリダイレクトしてしまうので困っています.
0603nobodyさん
2009/12/25(金) 20:14:54ID:???request.referrer を見る。(referでも可:-)
ただし、送らないように設定している人がアクセスできなくなる。
今回はAJAXみたいなので、別解として
verify :xhr => true, :only => :some_action
も紹介しておく。今回はたぶんこっちがよいのでは?
0605nobodyさん
2009/12/26(土) 04:11:25ID:???rubyのバージョンは1.8.6推奨なの?
reeは1.8.7出てるから、そろそろ1.8.7?
0606nobodyさん
2009/12/26(土) 09:30:19ID:???3.0.preでは1.8.6は切り捨て。
0607nobodyさん
2009/12/26(土) 12:36:12ID:N7t9YIOf0608nobodyさん
2009/12/26(土) 14:30:42ID:???1.8.6と1.8.7の差ってそんなに大きいの?
0609nobodyさん
2009/12/26(土) 16:12:06ID:???0610nobodyさん
2009/12/26(土) 18:16:55ID:5fe5VdgJhttp://d.hatena.ne.jp/rubikitch/20080508/ruby187
http://drnicwilliams.com/2009/11/03/first-look-at-rails-3-0-pre/
0611nobodyさん
2009/12/26(土) 22:35:03ID:???どうっていうと?
デプロイは異常に楽だよ。
DBに溜め込むデータ量が少ない自分専用の小物アプリくらいなら無料でもいける。
まともなアプリを設置するには有料じゃないと無理。
0612nobodyさん
2009/12/27(日) 02:54:47ID:???0613nobodyさん
2009/12/27(日) 03:56:24ID:???見たいだけならgitからどーぞ。
0614nobodyさん
2009/12/27(日) 05:59:02ID:???from>to ならエラーとするようなvalidateを書いたんだが
def validate
errors.add(:from_date, "日付が不正です。") if (from_date > to_date)
end
エラー発生時にfrom/toどちらとも赤い四角(class="fieldWithErrors")で囲む方法ってある?
0615nobodyさん
2009/12/27(日) 09:48:34ID:???そういうカスタマイズって、Railsは難しいよねー
質問なんですけど、ruby script/console してから、FooController.new.index()を実行するとエラーになります。
consoleのなかからControllerオブジェクトを生成するただしい方法を教えてください。
0616nobodyさん
2009/12/27(日) 11:42:20ID:???app というオブジェクトがある。
script/console> app.get '/foo/index'
のようにリクエストを投げると
script/console> app.controller
に対応するコントローラがセットされる。
0617nobodyさん
2009/12/27(日) 14:33:15ID:???フレームワークの範囲内でやるには、関係が満たされていないときに
両方を errors.add すればいいんじゃない?
0618nobodyさん
2009/12/27(日) 17:34:38ID:???http://rubyonrails.org/download みると冒頭に
We recommend Ruby 1.8.7 for use with Rails.
とある。
0620nobodyさん
2009/12/28(月) 01:09:51ID:???全く未検証ながら、
ActionView::Base::Helpers::ActiveRecordHelper#to_date_select_tag(など)の定義を
app/helpers以下にコピってきて、
error_wrapping(to_date_select_tag_without_error_wrapping(options, html_options),
object.errors.on(@method_name))
を、
has_error =
case @method_name
when :from_date, :to_date; object.errors.on(:from_date) or object.errors.on(:to_date)
else objet.errors.on(@method_name)
end
error_wrapping(to_date_select_tag_without_error_wrapping(options, html_options), has_error)
と書き換えた定義を作る。
from_date to_dateのフィールドのエラーを判定するときだけ相方のエラーも考慮。
0621nobodyさん
2009/12/28(月) 06:27:12ID:6MaAP7GAhttp://www.engineyard.com/blog/2009/rails-and-merb-merge-the-anniversary-part-1-of-6/
The Rails 3 Router: Rack it Up
http://yehudakatz.com/2009/12/26/the-rails-3-router-rack-it-up/
0622nobodyさん
2009/12/30(水) 06:18:07ID:p1BkGZKihttp://pc11.2ch.net/test/read.cgi/php/1187333485/l50
0623nobodyさん
2009/12/30(水) 10:01:16ID:+1QPHe9X0624nobodyさん
2009/12/30(水) 11:20:23ID:p1BkGZKiRails and Merb Merge: Performance (Part 2 of 6) | Engine Yard Blog
http://www.engineyard.com/blog/2009/rails-and-merb-merge-performance-part-2-of-6/
0625nobodyさん
2009/12/30(水) 11:30:17ID:???0626nobodyさん
2009/12/30(水) 15:10:49ID:???1.9.2はpreview2も出ないし、まだ先なのかね
0627nobodyさん
2009/12/30(水) 15:57:14ID:???0628nobodyさん
2009/12/31(木) 06:41:41ID:0ZeyyLVy@37signals is already running a few minor apps on Rails 3. We've just started playing w/ porting Basecamp. Exciting times!
http://twitter.com/dhh/status/7208264678
http://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
0629nobodyさん
2009/12/31(木) 06:58:56ID:0ZeyyLVyhttp://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!
http://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.
http://twitter.com/dhh/status/7107817801
0630nobodyさん
2009/12/31(木) 08:31:33ID:0ZeyyLVyhttp://twitter.com/dhh/status/7208225785
dhh
0631nobodyさん
2009/12/31(木) 14:23:44ID:???dogfooding出来る程度動くようにはなってきたというのはわかった
0632nobodyさん
2009/12/31(木) 22:48:13ID:0ZeyyLVy0633nobodyさん
2010/01/03(日) 01:04:56ID:???has_manyとかはidしか条件にしないし、他の条件を使えない気がする。
0634nobodyさん
2010/01/03(日) 17:24:17ID:Kv5gn0C+0637nobodyさん
2010/01/04(月) 00:32:56ID:???記事のモデルオブジェクト(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
0638nobodyさん
2010/01/04(月) 01:57:03ID:14ehE+TLdef 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 => 条件)
0640nobodyさん
2010/01/04(月) 02:08:21ID:???40歳過ぎにもなれば、営業能力70%技術力30%くらいの割合になるマジで
同じ会社で死ぬまで雇ってもらえるなら別だが
そんな保障はどこにもない
0641nobodyさん
2010/01/04(月) 02:09:27ID:14ehE+TLrestfulに書くならばComment Controllerを作って、createアクションで処理する方がいいよ。
before_filter でPost.find(:post_id) を常にしておくべき。
そうすればその情報を使ってアソシエーションに沿ってコメントを作成できる。
0642nobodyさん
2010/01/04(月) 14:14:39ID:CMnexdc2http://sakuro.tumblr.com/post/305322764/rails-3-0-pre
0643nobodyさん
2010/01/04(月) 20:11:46ID:CMnexdc2http://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
0645nobodyさん
2010/01/04(月) 23:22:51ID:???亀レスだが has_many :people, :foreign_key=> 'original_key_name'
とかじゃダメなのか?
0647nobodyさん
2010/01/05(火) 06:24:05ID:???どうもありがとうございます。raiseは書かなくていいんですか。なるほどー。
> コメント数はcomment_countカラムを作らずに以下で数えるほうがいいと思うけど。よほど膨大な(100万単位の)コメントがつかない限り。
> Comment.count(:conditions => 条件)
すべての記事を、コメントやトラックバックの多い順でソートする機能を付けようとしています。
その場合、記事ごとにコメント数がついていたほうが簡単かつ高速なので、comment_countカラムを作っています。
とりあえず、トランザクションまわりについては>>637であってるのでしょうか。
詳しい方、お願いします。
0649nobodyさん
2010/01/05(火) 10:42:18ID:???コメント数はcomment_countカラムを作る必要性がわからん
また高速性を考えるならrailsを使う意味がない、生産性重視ならcomment_countカラムはいらん
0650nobodyさん
2010/01/05(火) 10:57:18ID:DXl89df8イノベーションのジレンマ - Wikipedia
http://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
http://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
スタートアップの始め方
http://www.aoky.net/articles/paul_graham/start.htm
テクノロジーの世界では、常にローエンドがハイエンドを食っている。
安価な製品をより強力にするほうが、強力な製品を安くするよりも簡単なのだ。
だから安価でシンプルというところから始めた製品は徐々に強力なものへと成長していき、水が部屋に満ちるように、
「ハイエンド」の製品を天井の方へと押し込めることになる。
Sunはこれをメインフレームに対して行い、IntelはSunに対して行っている。
0651nobodyさん
2010/01/05(火) 14:54:37ID:s5/1mF78Twitter創始者が語るWeb 2.0の要諦 ― @IT
http://www.atmarkit.co.jp/news/200711/16/twitter.html
Railsを使って2週間でプロトタイプが完成
ウィリアム氏がOdeo内で始めた小さなプロジェクトが「Twitter」だ。
Ruby on Railsを使って2週間で最初の動くバージョンを作り上げたという。
Twitterをはじめると2週間でブログの更新が止まる理由 そしてはじまる(かもしれない)総表現社会 - mizchi log
http://d.hatena.ne.jp/mizchi/20090711/1247265579
0652nobodyさん
2010/01/05(火) 22:42:48ID:???transactionの使い方はそんな感じでいいと思う。
do..endのなかでsave!とかupdate_attributes!ね。AR::RecordNotSaved系の
例外が飛んで、transctionがrollbackする。
ただ、検索したり保存したりは >>638 の書いているコードのほうがキレイなので
それを参考にした方がいい。
コメント件数は>>644のいうとおり、counter_cacheを使うと同じようなことを
ARが勝手にやってくれるので、プロダクションコードではそちらを使う方がいいと思う。
あと >>649
> また高速性を考えるならrailsを使う意味がない、生産性重視ならcomment_countカラムはいらん
んなこたない。
counter_cacheなり、それの自作なりを使わないでソートするためには、
Rubyでゴリゴリ書くか、相関サブクエリ使うことになると思うんだけど、
前者はさすがに遅い/無駄だし、後者は面倒なだけだと思うんだけどどうか。
■ このスレッドは過去ログ倉庫に格納されています