Ruby on Railsスレ みんな語ろう。
3 :
デフォルトの名無しさん :2007/10/03(水) 16:58:22
おもちゃしか作れない(笑)
Ruby on Railsは本当に使えるのかっていうとはっきりいうとまだまだです。 Javaの数倍の開発効率と言われるが、早いのは、一つのテーブルにアクセスする 最低限の機能を実装するまでで、その後は、毎度おなじみの地味な作業が待っている。 おそらく、その辺はEclipseを使ってJavaで作った方が早いかも。 過度な期待をすると、とんでもないことになる。 パフォーマンスについても、ちょっと表現は厳しいかも知れないが、 Javaでいうと、Appletで遊んでいた頃に近いかも。 つまり、遅い。
おもちゃでも作る時間が1/10になるなら医院で内科医
たまーに1ヶ月に1回くらい [FATAL] failed to allocate memory で死んでることがある いまのところどんな条件で再現するとか分からないので 実務で使うのが不安で仕方ない たまにアクセスして死んでたら手動で再起動するか 監視プロセス走らせて自動で再起動かけるか
俺のところはずっと動きっぱなしだなぁ。 アクセス数がちがうのか。
>>6 Rubyに興味が湧いてここ覗いたばかりの用語すら知らない
初心者で申し訳ないんだけど、なんか相互参照とかでオブジェクトが
リークしているとかの可能性は?
あとはたまに動くデータアクセス系の処理で、とんでもない
レコード数を読み込むのがいるとか。
あー、いるね。以前select * from zipとかいって、 郵便番号テーブル全部読み込んでforで回してなんか探してるコードを見て 卒倒しそうになった。
>>9 全部読み込んで回してたらもはやRubyもRailsも関係ないよね?
うんないw
なんとなく共用のレンタルサーバで、 プロセス数限界ぎりぎりか、 他のユーザにメモリ取られている感じがする。
>>7-12 みなさんありがとうございます
本に載ってたサンプルのお手本をちょっといじって
テスト的に作ったものなので複雑なことは全くしてません
>>12 それのような気がします
今は気付いたら再起動してるのですが
前、さくらの専用鯖(Efficionのブレード上のLinux)で動かしてたら、 ちょっとプロセス増やすとすぐにメモリ足りなくなることがあって、 しらべたらswapパーティションがunmountされてたことがあったな。
間違えた。unmountじゃない。swap offか。
16 :
デフォルトの名無しさん :2007/10/06(土) 14:50:31
Linuxはメモリが足りなくなると「ランダムに」プロセスを殺すという狂った仕様だからなー。
すべての親であるinitを殺せばメモリはいらないな
時期と環境くらい書いてくれんと何の参考にもならんな
便乗だけど [FATAL] failed to allocate memory これって malloc とかに失敗して NULL が返ったときに 出るエラー?
うむ。
しばらく様子見して確保出来るようになるまで待ってくれたりしないの?
GCはやってみるんじゃなかったっけ? それでやっぱダメなら諦めて死んでた気がする。
23 :
デフォルトの名無しさん :2007/10/07(日) 02:58:47
rhtmlがいいものだと思ってる人はいるのだろうか・・・
imagemagickとか使うとメモリが開放されないっぽいので、
うちは一定時間起動してるmongrelインスタンスをランダムに再起動してる。
別にcronjobで一日一回再起動でもいいと思うけど。
>>16 いちおうlinuxのoom-killerはランダムじゃなくてメモリの大きい奴とあとなんかのパラメータを見て
プロセスを殺してた気がする。たぶん角度とか。
25 :
デフォルトの名無しさん :2007/10/09(火) 17:50:50
RailsからMySQLにUTF-8で書き込み、Railsで表示→OK RubyのCGIからMySQLにUTFで書き込み、CGIで表示→OK CGIから書き込んだものをRailsで表示→文字化け Railsで書き込んだものをRailsで表示→文字化け 化け具合からするとRailsの方が怪しい(CGIで2バイト文字が????)んだが、この現象の解消法誰かわからないかな?
26 :
デフォルトの名無しさん :2007/10/09(火) 17:55:18
‘/PHP.で使えるcoding.は、基本的には何と何と何が在るのですか? 何処ぞの知識豊富な方、御教養の程をお願いします。
>>25 いろんなところに可能性があって分からん。
config/database.ymlでdbのencodingはちゃんとした?
HTTPのcharsetもチェック。
MySQLのテーブルのエンコーディングはUTF8になっているか?
あと
・RailsからMySQLにUTF-8で書き込み、Railsで表示→OK
と
・Railsで書き込んだものをRailsで表示→文字化け
は何が違うんだ?
CGIのほうは使ったこと無いから知らね
WebProg板行けよ
29 :
デフォルトの名無しさん :2007/10/12(金) 16:10:28
>>28 Web制作板に行ってみたが、rubyのスレなかったよ。
ruby on railsって見たけれど、チームの決めるローカルな仕様をライブラリに持ち込んだ
って感じだね。
WebProgのRailsスレ、落ちたっぽいな おいおい
落ちたってか、
>>1 が次スレを何故かここに立てちゃったんだよ
33 :
デフォルトの名無しさん :2007/10/12(金) 17:51:33
別にどっちでもいいよ。どうせどっちの板も見てるし
吹いた
38 :
デフォルトの名無しさん :2007/10/13(土) 00:32:32
>>4 元々、プログラマなんて知的ブルーカラーなんだから。
1つのDBで済むのなら、やっぱり早いんじゃないの? 車輪の再発明をする必要がない
だけ便利。
コピペだよ
40 :
デフォルトの名無しさん :2007/10/13(土) 00:37:44
>>32 違うんだよ、立てようかなと思ってスレ見たら
次スレ貼られてたから、あっもう誰か立ててくれたんだと思ったんだよ
でよく見たらここだった、でそのあとすぐ落ちた
すんません。 RORで作られたredminってBTS使おうと社内で頑張ってるんですが、 ガントチャートで日付が表示されないってのですごい不評買ってます。。 自分で修正しようにもRubyを触ったことないんでお手上げです。 解決方法または修正方法ってどんなかんじでしょか。
おなかが吹田
44 :
デフォルトの名無しさん :2007/10/13(土) 07:43:36
>>44 おぉ、専用のがあったのですね。
ありがとうございました。
仕事をするなら最高の環境で。Rails、Mongrel、Capistranoが組み込まれたLeopardは、Ruby on Rails開発に理想的なプラットフォームです。 Railsだけじゃなかったんだな。デザとかが気軽に試したりするのかな
デザってデザイナー? いまどきのMacはべつにデザイナー御用達ってわけじゃないけど。
Mongrelって結構落ちるな。 ログみても特に情報でてないから、何が原因かわからん……
まじで? ウチはぜんぜん落ちたことないけど... なんか、だいぶ前にはたまに落ちたことあるけど、今は安定してる。 MLを検索して類似の問題がなかったら、 地道にログレベルを上げるとか、vmstatでシステムの監視とかして、 尻尾を掴んだらgdbかなにかで追っかけるしかないのでは。 あるいは死んでたら再起動するとか、そういう運用で凌ぐか。
うちも落ちないけど、負荷少ないからな
51 :
48 :2007/10/17(水) 17:30:00
マシンに高負荷かけると落ちてるだけとは思う。 apacheの方が先に落ちると思ったのが、mongleが先に落ちたので意外だっただけ
大昔に NeXTでサーバやってたときには、 アクセス集中すると、カーネルごと落ちて大変だった CGIとかwebサーバとか、そういう問題じゃねーかんじで。
個人的な経験では、mongrel_railsをクラスタ化して複数プロセス 走らせてて、かつ標準のLoggerを使ってた頃によく死んでたな。 同時に2つ以上のプロセスがログをローテーションしようとしてな。 プロセス内の排他はLogger内でやってたはずだが、プロセスをまたがるとダメぽい。 面倒だったのでSyslogLoggerに乗り換えた。
54 :
デフォルトの名無しさん :2007/10/20(土) 18:42:14
55 :
デフォルトの名無しさん :2007/10/22(月) 17:51:40
> 食べログ.comは,ユーザーの評価に基づきレストランをレーティングするサイト。2005年3月に >サービスを開始し,2007年9月末で登録レストラン件数は約13万店,登録レビュー約29万件,登録 >写真約24万点,月間利用者約380万人,月間約2900万PV(ページビュー)となっている。サイト利用 >者数で見ると1年前の約3倍と,アクセスが急増しているという。 価格コムってこんなのもやってたのね…ぜんぜん知らなんだ
月間380万かぁ・・・まだまだ少ないな
Ruby on Railsについて質問があるのですが、もしどなたか 知ってましたら教えて下さい。。 (質問するとこではないかもしれませんが、他に見つからなくて) モデルに varidates_xxx を定義し、viewでerror_messages_forを 呼ぶとエラーを出力してくれますが、モデルで検出されるエラー 以外も同じ形式のフォーマットで出力したいと思っています。 モデルのエラーと、その他のエラーの形式を合わせるのに、 皆さんどのようにしているのでしょうか? 宜しくお願いします。
あんまりやったこと無いので間違えてるかも。 @requestor.errors.push でフィールド名付きor無しでメッセージつっこむ。 詳しくはドキュメントでError(s?)を探して見てくれ。
まちがえた
add_to_base
render :text => "errorです" :status => 555 の時に下の"Hoge Error"に相当するメッセージを指示する手段ってありますか? HTTP/1.x 555 Hoge Error
それなんてHTTP?
>>59-61 ありがとうございます〜、調べながらやってみます。
RailsのAPIリファレンスとかどうも読みなれてないもんで
苦労してます。。。
>>62 多分 :status => "404 Not found" とでもすればいいはず。
今朝通勤ラッシュ前の山手線乗ってたら RoRの本を読んでる若者を発見した しばらく観察してたら彼は居眠りを始めた
>>66 それでいいなら最近は :status => :not_found と書ける。
public/404.html みたいな話のことかと思ったんだが違うのかな。
だから 404 Not Found, You Fool! のような出力にしたいという話ではないのか
というわけでpublic/555.htmlを作って public/.htaccessで ErrorDocument 555 /555.html とか。 あ、Apache限定か。
rails用のIDEはどれがオススメですか?
>>72 Emacs使い方わからないです。今はvi。WinだとRDE
できればwinでGUIなやつを。
Komodoは有料だからRadRails? でも不安定らしいしJavaアプリだから非力なPCじゃツライ
RDEはUTF-8にすると変になるのを解決できないので。
RoR やってるひとに Vim ユーザって多くないの?
じゃあ一応TextMateって言ってみようか Windowsで動かないし、IDEでもないが
あと名前出てないけどNetBeansもかなり良いんじゃない。 機能は豊富だし、無料で手に入るし。
MacOS X 10.5 Leopard入れてみた。 Rubyがただの/usr/へのインストールではなくFrameworkとして入ってる。 Railsは1.2.3がgemとして入ってる。 capistrano 2とかmongrelとかもある。 ls /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems RedCloth-3.0.4/ cgi_multipart_eof_fix-2.2/ hpricot-0.6/ ruby-openid-1.1.4/ actionmailer-1.3.3/ daemons-1.0.7/ libxml-ruby-0.3.8.4/ ruby-yadis-0.3.4/ actionpack-1.13.3/ dnssd-0.6.0/ mongrel-1.0.1/ rubynode-0.1.3/ actionwebservice-1.2.3/ fastthread-1.0/ needle-1.3.0/ sources-0.0.1/ activerecord-1.15.3/ fcgi-0.8.7/ net-sftp-1.1.0/ sqlite3-ruby-1.2.1/ activesupport-1.4.2/ ferret-0.11.4/ net-ssh-1.1.2/ termios-0.9.4/ acts_as_ferret-0.4.1/ gem_plugin-0.2.2/ rails-1.2.3/ capistrano-2.0.0/ highline-1.2.9/ rake-0.7.3/
あ、rubyのバージョンは1.8.6-p36
喜び勇んで leopard を入れてみたものの mysql/ruby が入れられない... だめぽ
83 :
デフォルトの名無しさん :2007/10/28(日) 03:40:07
●railsのバグ?をハケーンしたので、メモっておきます。 当方、初心者なので、自分のバグだったらごめん。 レイルズプラグイン(自作)をscript/generateしたとき、 migirateのcreate_ファイルが複数形になってしまいmigrateが通らない。 sを削除したら、migrateが通る。 D:\isearch\isearch>ruby script/generate photo photo exists app/controllers/ ・・・・ create app/views/photo/show.rhtml exists db/migrate create db/migrate/002_create_photos.rb ★↑複数形になっていて、migrateがとおらない!★ D:\isearch\isearch>rake migrate (in D:/isearch/isearch) rake aborted! uninitialized constant CreatePhotos (See full trace by running task with --trace) ★ここで、ファイル名を002_create_photo.rbに変更。(sを削除)★ D:\isearch\isearch>rake migrate (in D:/isearch/isearch) == CreatePhoto: migrating ===================================================== -- create_table("photos", {:force=>true}) -> 0.1570s -- execute("alter table photos change data data longblob") ・・・・・
84 :
デフォルトの名無しさん :2007/10/28(日) 03:40:58
バージョンは、1.2.3でした。
D:\isearch\isearch>ruby script/generate photos photos
86 :
82 :2007/10/28(日) 08:17:57
何かと思ったら、OSXのrubyがuniversalになっていて、 拡張ライブラリもuniversalで作らなきゃだめっぽい。 おかげで MySQL も universal で作らなきゃだめっぽい。 これじゃ、自分でrubyから入れ直した方が早そう。。
87 :
デフォルトの名無しさん :2007/10/28(日) 11:42:50
83です。 >85 ありがと。自分の重大なバグでした。 すれ汚し失礼しました。
88 :
82 :2007/10/28(日) 11:58:20
89 :
デフォルトの名無しさん :2007/10/28(日) 14:10:13
ユーザ毎にブックマークを管理するウェブサイトをつくるとします。 そして各ユーザのブックマークには、ユーザ毎に管理された連番を付加することとします。 以下のようにテーブルを設計しました。 usersテーブルのbookmark_last_noがそのユーザで最後に使用されたブックマークの連番、 bookmarksテーブルのnoがそのブックマークに付加された連番に当たります。 create_table :users do |t| t.column :user, :string t.column :bookmark_last_no, :integer end create_table :bookmarks do |t| t.column :no, :integer t.column :user_id, :integer t.column :url, :string end このように設計したのですがもっと綺麗に出来る設計はあるでしょうか? また、この設計で良い場合、 bookmark_last_noをインクリメントするのはModelで行うべきでしょうか、 それともControllerで行うべきでしょうか。 どなたかアドバイスしていただけると嬉しいです。。
>>89 bookmarkのテーブルと、userのテーブルと、
bookmarkとユーザーをつなぐテーブルを作るのが良さそうだけど。
> このように設計したのですがもっと綺麗に出来る設計はあるでしょうか? 今のままでいいんじゃない? > bookmark_last_noをインクリメントするのはModelで行うべきでしょうか、 > それともControllerで行うべきでしょうか。 どっちでも良いけど、この場合はcontrollerだろな
92 :
デフォルトの名無しさん :2007/10/28(日) 18:13:54
rubyを見つけてくれた、どこかの外国人様に感謝(笑)。
93 :
デフォルトの名無しさん :2007/10/29(月) 02:53:05
Railsを携帯対応にしたいのですが、おすすめのプラグインってありますか?
>>93 jpmobile とか?
俺も使ってないのでどれくらいイケてるのか知りたい。
絵文字の変換とかもやってくれるらしい
Ajax関連です。 link_to_remoteなんだけど、パラメータを幾つか渡したい。 でもフォームを作成するほどではない。 こんな場合は、どうやって渡すべきでしょう? GETとPOSTのどっちを使った方がベターでしょう?
結構意味不明
98 :
デフォルトの名無しさん :2007/10/30(火) 16:59:32
99 :
デフォルトの名無しさん :2007/10/30(火) 20:31:39
100 :
デフォルトの名無しさん :2007/10/30(火) 20:33:06
100
会場が島根じゃ45人もきたって感じだろ
一時的に松江市の人口が1%ぐらい増えたのでは?
板違いの上に結局雑談しかしない糞スレ
RailsのスレってWebなんか?
106 :
89 :2007/10/31(水) 15:05:51
>>90 ありがとうございます。仰っている意味は理解できました。
>>91 ありがとうございます。
出来ればなぜControllerで行うのか教えていただけると嬉しいです。
Modelにてbefore_createを使う方法も考えたのですが。。
投げるSQLが一つ減ると思うんだけど。 処理としてはこんな感じ? User.transaction do user = User.find(user_id) user.bookmark_last_no = user.bookmark_last_no + 1 user.save! bookmark = Bookmark.new(params[:bookmark]) bookmark.no = user.bookmark_last_no bookmark.save! end
LoginEngine入れた環境で、入力画面→入力項目確認画面→おつかれさま! ってしたかったんだけど、なんかうまく行かない。 hidden_fieldで@userな値持ちまわったら、signupメソッド丸写しじゃだめなのかなー。
109 :
89 :2007/11/02(金) 11:53:33
>>107 何故increment!を使わないのか
111 :
デフォルトの名無しさん :2007/11/03(土) 15:06:51
activeldapをぜひ使ってみたいのですが、試してみたところ、 内部で呼ばれているLDAP::ConnでSegmentation Faultエラーが出てしまい、 どうしてもうまくいきません。 使われている方はいらっしゃいますか? ちなみに、インストール方法として、 ・svnで 最新activeldapリポジトリをチェックアウト、 ・gemで、 ・ruby-net-ldap ・ruby-activeldap ・Ubuntuだと、aptで ・libldap-ruby1.8 ・libactiveldap-ruby など、いろいろと利用できるパターンがあるようですが、どの組み合わせが {安定している | 実績がある | 人気がある}のでしょうか? いろいろ試してみましたが、どうしてもactiveldapでは Segmentation Faultエラーになってしまいます。 (net/ldapを直接呼び出すと大丈夫みたいです)
そのエラーをぜんぶ書くと誰かがたすけてくれるかもしれない。
SEGV死ならふつうRubyレベルより上でエラーはそれ以上出ないのでは。 むしろ必要なのはlibldapとかのライブラリバージョンを含む環境と、最小コードだろう。 net/ldapが動くなら問題はたぶん、必須オプションが空になってるとか、かな? まぁどこで落ちてるかによるけど。
ruby-net-ldapを使って、WindowsからActiveDirectoryにアクセスして使ってるけど、結構いける
gem serverを立ち上げたときに RailsのAPIドキュメントだけじゃなくRubyの標準APIのドキュメントも 見られるようにしたいんですが、何か方法をご存知の方いますか?
ActiveScaffold触ってみて吹いた こんなの手書きじゃすぐには作れねぇwww
後印刷機能が付けば最高。
Railsはじめるときサンプルとして何作った? 多そうなのは: [1] ショッピングカート [2] ブログ [3] Wikiクローン [4] スケジュール管理 あたりかな?
顧客のシステム作った
サンプルは眺めるだけで作りたいサイト作り始めたけど
オライリーあたりに載ってたTODOアプリを手順を追って作った後は 自分で作りたいものを作った。
演習用だとなにがいいんだろう。 やっぱ blogとかだと一通り全部あるからいいのかな。
Railsの講習やってるところや講習受けた人にカリキュラムを聞いてみたら?
ネット上の入門ページで多いのはこんな流れかな。 @データベース作成。(migration使用の場合はデータベースの扱いがちょっと違うけど) Arails hogehogeで作成。 Bdatabase.ymlの設定。 Cruby script/generate scaffold [モデル名] [コントローラー名] Druby script/server hogehoge Eapp/helpers/hogehoge_helper.rbをいじる。 Fapp/controllers/hogehoge_controller.rbをいじる。 Gapp/views/my_wiki\show.rhtmlをいじる。 Hconfig/routes.rbをいじる。 Icomponentsディレクトリをいじる。CSSを使う。 Jserverにアップする。 Krakeを詳しく説明。fixtureの説明。 Lactiverecordを詳しく説明。 Mactivepackを詳しく説明。リレーショナルのn:nの説明まで。 Nファイルのアップロード・ダウンロード機能の追加。 OHypertext用のパーサの作成。(wikiサンプルではほとんど出てくる。) 書き疲れたので他に残ってたら追記してね。
P認証機能の追加 忘れてたw
それ、自分で考えて書いたの?暇だな
突然な質問で申し訳ないんですが、 Railsが自動的に吐き出すコードを解説してるようなサイトはありませんか? Railsが実際何をやってくれるのか調べたいもので・・・
入門書ならたくさん出てると思うが
>>131 本より出来ればHPの方が助かるのですが・・・
こう書いたらこんなコードを自動的に吐き出すよ!的な解説してるとこありませんかね?
rails_generatorのコード読めばいい railsのコードを読むのは面白いよ
>>133 ,134,135
ありがとうございます。
あと出来れば日本語の方がいいのですが・・・
変換すればいいのですが、やはりもともと日本語の方が見やすいので・・・
お願いします!
みんな優しいけど俺はとっととソース嫁よと思った。
Railsのソース面白いよな。ヲイヲイそこまでやるのかよ、みたいな。 ActiveSupportのcore_extの便利メソッドあたりから始めるのがオススメ。
>>135 リフレクション三昧で、複雑な機能の定義場所に実装があることの方が珍しいから、
show sourceが役に立ったことはあまりないんだけど、
Railsのソースを読むのにはあれは使えないんじゃない?
そもそも公開メソッドしか読めないから、どうせ実装は見えない事の方が多いし。
rails 2.0.0RC1のソース読めば? バグを見つけて修正したらネ申
141 :
135 :2007/11/14(水) 23:44:30
>>137 ごもっともです^^;
>>139 確かにRailsは見えない部分の実装があって、困惑してます
Railsは簡単に作れるがコンセプトな気がするので、
「こう書けば、この機能が実装されるよ!」
という物がリスト化されててもいい気がします・・・(日本語で)
>>140 無理をおっしゃるw
> 「こう書けば、この機能が実装されるよ!」 > という物がリスト化されててもいい気がします・・・(日本語で) じゃあリスト化してよ。日本語で
ソース嫁タコが
144 :
デフォルトの名無しさん :2007/11/15(木) 21:37:54
146 :
デフォルトの名無しさん :2007/11/16(金) 02:14:32
だったら普通にJavaのアプレットでいいじゃん
どういう意図でこんなの作ったのか知らないけど 全部Rubyコードで完結させたいひと向けなんでしょうね
試み、というかJRubyで出来たコードはJavaのバイトコードそのものでしょ? それがApplet環境で動くのはまぁJRubyの試験としては意義があるだろうが、 まぁそらそうだろ、ってとこじゃないの。 Appletで動かしたいRubyの既存コードってのがそんなにないのも感動がすくない原因かも。 RDで作ったAPIのマニュアルのコードをちょっと変えたり、少し使ってみたいときに、 ブラウザで閲覧しながらすぐ試せると便利、かな? あとは、breakpointerはローカルのappletで動かして、リモートのRailsのアプリをブラウザで操作しつつデバッグとか。 XULとかと組み合わせてWeb2.0風RailsIDEが実現できるかも。 ...Java Appletの時点でWeb2.0じゃないな。 でもJRubyにはRailsのあまり強くない実行環境をJava並にできるかもしれないのでかなり期待してる。
149 :
デフォルトの名無しさん :2007/11/17(土) 23:50:51
<h1>Search</h1> <%= start_form_tag :action => 'search' %> keyword:<%= text_field_tag 'keyword','',:autocomplete=>"off" %> <%= observe_field 'keyword', :frequency=>0.3, :update=>:results, :url=>{:action=>:search}, :with=>"'keyword='+encodeURIComponent(value)" %> <%= submit_tag 'Search' %> <%= end_form_tag %> <div id="results"> <%= render:partial=> 'searchresult' %> </div> ajaxを使ったリアルタイム検索をしたいのですが テキストフィールドに文字を打つと なぜかSearchとテキストボックスがもう1つ出てきます 原因がわからず四苦八苦してます ご教授願いますorz
_searchresultの中身みせてみろ。
というか最初は<div id="results"></div>のように中身は空ではないのか?
152 :
デフォルトの名無しさん :2007/11/18(日) 01:03:51
_searchresult.rhtmlです <table> <tr> <th class='title'>title</th> <th class='author'>author</th> <th class='publisher'>publisher</th> <th class='category'>category</th> <th class='price'>price</th> <th class='release'>release</th> <th class='isbn'>isbn</th> <th class='memo'>memo</th> </tr> <% @items.each do |item| %> <tr> <td><%=h item.title %></td> <td><%=h item.author %></td> <td><%=h item.publisher %></td> <td><%=h item.category %></td> <td><%=h item.price %></td> <td><%=h item.release %></td> <td><%=h item.isbn %></td> <td><%=h item.memo %></td> </tr> <% end %> </table> 特に変わったことはしてないと思うのですが・・・
searchのレンダリングで:layout => falseしてる?
154 :
デフォルトの名無しさん :2007/11/18(日) 01:27:13
レンタリングなどはしていないです searchメソッドも貼り付けておきます def search @keyword = request.raw_post || request.query_string if request.post? keyword = '%' + params[:keyword] + '%' @items = Item.find(:all,:conditions=> ['title like ? or author like ? or publisher like ?',keyword,keyword,keyword]) else @items = [] end end
コントローラのアクションでrederメソッドを呼ばないということは、 アクションの最後で render :action => アクション, :layout => true するという意味のはず。 最後に明示的に render :layout => false してもダメかな?
156 :
149 :2007/11/18(日) 21:32:28
divの中にあったrenderを
searchメソッドのif文の最後に入れたら問題が解決しました
>>150 >>151 >>153 >>155 ご親切にありがとうございましたorz
ようやく前に進めます
layout => falseをしてもうまくいきませんでした
結局何が原因かわからず・・・
初歩的な質問で申し訳ありませんがお願いします. Model.find(ids) (ids は配列) としたときに,結果の並びを ids と同じになるようにしたい(ids == [2,3,1] なら返ってくるモデルのidの順番も[2,3,1])のですが,どうすれば実現できるでしょうか?
>>157 自前で並べ直すしかないんじゃないかな。
hash = {}
Model.find(ids).each {|model| hash[model.id] = model}
models = ids.collect {|id| hash[id]}
puts models
または
hash = {}
ids.each_with_index {|id,index| hash[id] = index}
models = []
Model.find(ids).each {|model| models[hash[model.id]] = model}
puts models
159 :
デフォルトの名無しさん :2007/11/21(水) 01:24:18
Joyent Slingshot の日本語解説ってどっかにないか?
>>159 本格的なものはまだ書かれてないね。てか、基本RoRだし、VMの説明なんて(ry
161 :
デフォルトの名無しさん :2007/11/24(土) 10:32:33
アドビの画像ファイルを表示するようなプラグインてありますか? attachment_fu ImageMagick RMagick らへんでやろうとしているが上手くいかないです・・・ eps・ai等を表示したい。 jpegに変換できるプラグインとかがあったらできそうなんだが。
AIはワカランけどEPSならghostscript対応のImageMagickで処理できそうな。
使い方間違ってるお
× <%= item.isbn > ○ <%= item.isbn %>
166 :
163 :2007/11/24(土) 22:57:54
・・・orz
>>165 解決しますた
どもですorz
ARのクラスメソッドでfindあるけど 現在保持しているレコードセットのインスタンスに対して インスタンスメソッドで findできるようなプラグ印とかあるでしょうか サブクエリーというか…
168 :
デフォルトの名無しさん :2007/11/25(日) 22:11:09
>>167 Enumerable の find(detect) や find_all(select) を使う。
コンテキストを間違うとARの find を呼びかねないので *ect を使うことをおすすめする。
サブクエリというか、AR#find時にincludeした関連テーブルに対してはAR#findが使えることはご存じ?
清水さんの本って良いですか?
170 :
161 :2007/11/26(月) 07:26:54
>162 ありがとう。 とりあえず、ImageMagickでやってみます。 自分はどうやら、RMagickでミスってるみたいでした。 -test.rb--------------- require 'rubygems' gem 'RMagick' include Magick cat = ImageList.new("Cheetah.jpg") smallcat = cat.minify smallcar.write("new.jpg") exit ---------------- >ruby test.rb c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:377:in `report_activate_error': Could not find RubyGem RMagick (>= 0) (Gem::LoadError) from c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:309:in `activate' from c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:76:in `active_gem_with_options' from c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:50:in `gem' from test.rb:2 とエラーになってしまう。 RubyGemsの調子が悪くて、rubyを再インストールしたんだが、ここでとまってます。 ぐぐったけど出てこないねー。 ・C:\ruby\lib\ruby\gems\1.8\gems\rmagick-1.15.9-unknown\lib\RMagick.rb は存在している。 ・環境変数は GEM_HOME=C:\ruby\lib\ruby\gems\1.8\gems 教えて君で悪いのですが、どこかチェックする項目あれば教えてください。
require 'rmagick' (小文字)と書いてたのをunix系に持って行って動かない という話はよく聞くけど、Windowsだし、RMagickと書いてあるし、そこ は問題ないね。 ほかのgemは読めてるの?
おれもこのバージョンやってみたがうまくいかないなぁ。(ついでに1.15.11もやったがだめだった) 古いほうがいいかもしれない。 rmagick-1.14.1-win32なら動くと思う。InstantRails-1.7では動いた。
173 :
161 :2007/11/26(月) 21:08:22
>171 gettextは読めています。 >172 やはりそうですか・・・ gemが悪いかもと思っていたんですが。。。 rmagickを落としてやってみます。 皆さんありがとう。
174 :
161 :2007/11/26(月) 21:44:24
★アンインストールも失敗(やっぱgem?可能性は半々か) >gem uninstall RMagick ERROR: While executing gem ... (Gem::InstallError) Unknown gem RMagick->= 0 ★旧バージョンをインスコ >・・・RMagick-1.14.1_IM-6.3.0-7-Q8-2>gem install rmagick-1.14.1-win32.gem Successfully installed rmagick-1.14.1-unknown 1 gem installed ★やっぱ同じ。 >ruby test.rb c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:377:in `report_activate_error': Could not find RubyGem RMagick (>= 0) (Gem::LoadError) from c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:309:in `activate' from c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:76:in `active_gem_with_options' from c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:50:in `gem' from test.rb:2 もう一度RUBYアンインスコして旧バージョンをインスコしてやってみます
rubygems 0.9.4 を使ってみる いっそ、 RMagick.so と RMagick.rb を、 site_ruby/1.8 に放り込む
177 :
161 :2007/11/26(月) 23:29:29
>176
>rubygems 0.9.4 を使ってみる
OneClickRubyでインスコ(たぶんgem0.9.4)でだめでした。
updateで今は、0.9.5です。
>いっそ、 RMagick.so と RMagick.rb を、 site_ruby/1.8 に放り込む
やってみたが、同じエラーでした。やっぱどっかのバグっぽい。
>176
>gem env
RubyGems Environment:
- RUBYGEMS VERSION: 0.9.5 (0.9.5)
- RUBY VERSION: 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
- INSTALLATION DIRECTORY: C:\ruby\lib\ruby\gems\1.8\gems
- RUBY EXECUTABLE: c:/ruby/bin/ruby.exe
- RUBYGEMS PLATFORMS:
- ruby
- x86-mswin32-60
- GEM PATHS:
- C:\ruby\lib\ruby\gems\1.8\gems
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
-
http://gems.rubyforge.org source_cacheをリネームしてみたけど同じエラーでした。
178 :
161 :2007/11/26(月) 23:30:55
あ、 - GEM PATHS: が空だ。。。 これか。。。
179 :
161 :2007/11/26(月) 23:37:12
いや、なんでもない。改行されてるだけだ。 あせるな161 今日はもう寝ます。
>>177 gem 'RMagick' じゃなくて、 require 'RMagick'
182 :
161 :2007/11/27(火) 01:06:28
>181 ありがとう。これですね。 あなた神です。 実際どうやったら使えるかは現状わかってないですが、 希望が見えました。 今度じっくりやってみます。 コンパイル済みの特注 gem を用意 ってどうやれば? ソース落としてきて、GCCかなにかて「コンパイルー」ってやるんでしょうか・・・ ま、やってみます。
183 :
デフォルトの名無しさん :2007/11/27(火) 11:25:37
すみません、質問をさせて下さい。 複数のテーブルに変更を加える複雑なアクションがあって、 1回の処理が完了するのに数分かかります。 一応テーブルへの書き込みはすべてトランザクションの ブロック内に入れていますが、複数のユーザから同時に 起動されるとさすがにまずいですよね? ちなみにDBはSQLite3.5.1でRailsのバージョンは1.2.5です。 ものすごい基本的なことが分かってないかもしれません。 可能な対策の方法とかアドバイスを頂けると有り難いです。
>複数のテーブルに変更を加える複雑なアクションがあって、 >1回の処理が完了するのに数分かかります。 何をやってるのかを知りたい
185 :
デフォルトの名無しさん :2007/11/27(火) 14:30:02
複数のXMLファイルを読み込んで解析し、ActiveRecordでストアして います。モデルの数は7で、互いに関連しています。 ファイルの変換はadmin画面から行い、一般ユーザは閲覧のみ可能 です。ただし、adminが複数人おり、同時に作業をすることがあります。 よろしくお願いします・・・。
だからいったのに
187 :
デフォルトの名無しさん :2007/11/27(火) 17:29:58
Ruby on Rails歴二時間の者でつが RailsはControllerを書いて、テンプレートを書いて ruby script\server 起動してどんな感じか見てみて 「ふぇ〜〜」って言っての繰り返しでつか〜?
ソースはリアルタイムで変更桶
>>182 同じトラブルに会いましたがこのコンビで解決しました。
ruby184-20.exe
rmagick-1.13.0-IM-6.2.9-0-win32.zip
やっぱりRMagicはバージョンをしっかり合わせないとダメみたいです。
190 :
161 :2007/11/27(火) 23:27:34
require 'RMagick' に変えて、 >いっそ、 RMagick.so と RMagick.rb を、 site_ruby/1.8 に放り込む でいけました。 コンパイルの呪文はまだ覚えてなかったみたいで、できなかったです。 皆さんありがと。
191 :
デフォルトの名無しさん :2007/11/28(水) 05:13:27
ruby on rails で質問があります。 ApplicationController,ActiveRecordを継承したクラスをそれぞれさらに 継承させてみました(似てたので) class ChildController <ApplicationController class Child <ActiveRecord class ChildAController <ChildController class ChildA <Child ChildAをinsertやupdateしようとしたときにChildAのvalidateが 効きません。Childでvalidateされているようです。 ChildAのみのvalidateを効かせるためにはどうすればいいのでしょうか
スペルミス
193 :
191 :2007/11/28(水) 23:25:40
え、スペルミスっすかー? ChildAControllerでmodelを指定したりとかしたんですけどダメっす なんか思想のレベルで勘違いとかしてるんですかね、、
rails 1.99.0 app/model/child.rb class Child < ActiveRecord::Base validates_length_of :name, :minimum => 5 #Childは5文字 end app/model/child_a.rb class ChildA < Child validates_length_of :name, :minimum => 3 #ChildAは3文字でOK end script/console >> ChildA.new(:name => 'XXX').valid? #3文字ならOKのはずだが、 #=> false >> ChildA.new(:name => 'XXXXX').valid? # 5文字は問題なし #=> true なるほど。 >> c = ChildA.new(:name => 'X'); c.valid?; c.errors.map(&:to_s) => ["nameis too short (minimum is 5 characters)", "nameis too short (minimum is 3 characters)"] ChildAのvalidationも呼ばれてはいるようですね。
195 :
191 :2007/11/29(木) 01:05:08
>>194 そうなんですよね
オーバーライドした意味がないって言うか、、
こういっちゃ何ですがrailsのソース読むとかあまり仕組みの方に
興味があるわけじゃないので(皆さんの意見読んでると大変そうだし)
とりあえずもう一個抽象クラスみたいにかましてそこから各々
ぶら下げて対応してみます。
(そんな大げさなものじゃないんでifで分岐させてもいいぐらいですが)
class ChildA < Child write_inheritable_attribute(:validate, []) validates_... end でどうでしょう? :validateだけでなく、:validate_on_saveとか:validate_on_createとかも見た方がいいかも。
validatesはメソッド定義じゃないからオーバーライドなんてするわけ無いんじゃないの?
>>194 の例で行くと
app/model/child.rb
class Child < ActiveRecord::Base
validates_length_of :name, :minimum => min_size #Childは5文字
def min_size
5
end
end
app/model/child_a.rb
class ChildA < Child
def min_size
3
end
end
みたいにしなきゃ駄目なんじゃないだろうか?
これが動くのか知らないけど
あれ、validateはinheritable_attributeだと勝手に思っていたので、 継承しても動くと思ってた... inheritableじゃないのか。
rails使える無料サーバってありますか?
200 :
191 :2007/12/02(日) 14:41:15
いろいろ勉強になります、、 ・validates_hogehogeはメソッドでなくattribute(validate_hogehogeメソッドにそれぞれ置き換わるものかと思い込んでました) ・attributeはinheritableかそうではないものがある、、 rubyって中でeval的というかinvoke的なものがガンガン使われてそうですが 実行時にしか発見できないエラーが多そうですね(コンパイルしないから当然ですが) 昔他言語だけど文字列評価する箇所で予想外の文字列ができててエラい目にあった事が、、
全部とはいわんがActiveSupportのcore_extの機能が標準になってほしいな。 blank? とか Symbol#to_proc とか。
202 :
191 :2007/12/04(火) 01:46:34
う、うまくいかんのでChild中のvalidateの中のif文で分ける事にした。。 if文最強!
AWDwR買ってきて、よし勉強するぞー え?RailsってSQLが必要なの? あたしサーバー型のSQL嫌いなのよね、Sqlite3だな …… ってやってたらチュートリアルでMySQL依存のコマンドが出てきて 俺涙目。
どこか言えばなおしてあげるよ
あの本って今でも通用するの?
206 :
デフォルトの名無しさん :2007/12/05(水) 03:35:02
どの本?
SQLが分かってないでRailsって厳しいんじゃない。 分かるならMySQLのリファレンス本でも見ながら適当に調べながらやるか、 SqLiteに拘るなら読み飛ばしちゃえば
Agile Web Development with Ruby on Rails 邦訳は「RailsによるアジャイルWebアプリケーション開発」だな。 2版の訳が出たばかりのところで2.0が出そうで涙目の人もいるかもしれん。
2007/10/26に第二番発売か。LoginEngineとかはacts_as系になったのかしら。 誰か知ってたら教えて〜。
>>209 俺のことか?
2版買ったけどまだ1ページも読んでないぞw
212 :
デフォルトの名無しさん :2007/12/07(金) 21:19:36
2.0リリースage
タグが出ただけじゃないの? まあそろそろだとは思うが。
214 :
デフォルトの名無しさん :2007/12/07(金) 23:27:35
gemもあるよ。一部rubyforgeからは取れないようだがgems.rubyonrails.comにはある。
215 :
デフォルトの名無しさん :2007/12/07(金) 23:38:59
つーか2.0.1タグ打たれてるwwwwww
入れてみたけどrdocがactiveresource以外入らないみたい あれ?
初心者で恐縮なのですが、Railsのscaffoldで作ったlist.rhtmlを編集しても、アプリケーションに 反映されないのですが、何故なのかわかりません。どなたかお教えください。お願いします。 初心者スレが終わってしまったようなのでこちらで質問させてください。
すいません解決しました。失礼しました。
ActiveScaffold以外で2.0の特徴って何かな。教えてエロいひと。
一つのサーバーに二つのアプリが入っていて それぞれmongrelのプロセスを5つ起動していて それをapacheのmod_proxy_balancerでロードバランスしている 感じなんですが、時々どれかのプロセスが固まって サイトにアクセスしてもレスポンスが返ってこないという 現象が起こっているんですが、下記の環境で 何か思い当たる事はないでしょうか? なんでも良いのでよろしくお願いいたします! ruby:1.8.4 rails:1.1.6 apache:2.2.6 mongrel:1.1
222 :
デフォルトの名無しさん :2007/12/09(日) 01:58:14
よく見たら俺の買ったの第2版じゃねーじゃねーかよ… まったく気づかんかった… 線路の画も違うし…orz
225 :
デフォルトの名無しさん :2007/12/09(日) 02:29:05
ヽ(`Д´)ノ
>>222 1.2.6まではプラグインだったけど、2.0からはRailsに取り込まれる。
227 :
デフォルトの名無しさん :2007/12/09(日) 02:45:00
おもいつくままに2.0 -ActiveResourceが付く。(ActionWebServiceはオプション) -テンプレート名は名前.フォーマット.エンジン -protect_from_forgery でCSRFを防ぐ。 -HTTP認証が標準でできるように。 -セッションデータはデフォルトではクッキーに持つ。 -Migrationが書きやすくなった。 create_table :articles do |t| t.string :title t.references :author # t.integer :author_id t.timestamps # t.datetime :created_at & t.datetime :updated_at end -ActiveRecordをXMLで読み書き可能 -商用DBアダプタは独立のgemに -acts_as_list/tree、paginate、inplace_editなどいろいろプラグイン化 -config/environment.rbでconfig/initializers/*.rbを読み込む。各種初期化はここで。
228 :
デフォルトの名無しさん :2007/12/09(日) 02:53:18
>>226 ActiveScaffoldって
http://activescaffold.com/ だよね。
AJAXでCRUDできたりするものなのか。どうやって使うの?
rails 2.0.1で
./script/generate scaffold Hoge title:string price:integer
./rake db:migrate
./script/server
としてみたが、JavaScriptを使っているようには見えないのだが……
In place editも出来ないし。
今の内に参考書売り払うか...
やぱ、今の参考書は陳腐化しちゃうもんかね。 rails2.0でAWDwRやりだしたらハマルのかな・・・ やってみよ
231 :
デフォルトの名無しさん :2007/12/09(日) 17:19:47
>>227 にあるみたいな差違があることを念頭に置いて使えば全く役立たずというわけでもあるまいて。
あわてるでない。 たとえ古くとも参考書のバージョンでやればよい。入門には十分。 必要な機能が新バージョンに見つかってから乗り換えればよいではないか。
233 :
デフォルトの名無しさん :2007/12/09(日) 18:35:58
arton氏のRails本はバージョン固定で解説するために特定バージョンを付属させてたな。
ActiveRecord::Serialization#to_json のドキュメント書いたのはどこのアホだよ
235 :
デフォルトの名無しさん :2007/12/09(日) 21:30:19
それがチェックインされたときに結構話題になったな。
236 :
デフォルトの名無しさん :2007/12/09(日) 21:33:30
古いバージョンの参考書でも、多分直接注意すべきなのは 1.paginationがpluginに出されたんでclassic_paginationをインストールしておく 2.Viewの拡張子を.rhtml→.html.erbに読み替え 3.実運用するつもりなら、environment.rbに:secretって秘密鍵が出来てるんで管理に注意 くらいかな。 多分あとは殆どそのまま動くと思う
238 :
デフォルトの名無しさん :2007/12/10(月) 08:38:26
あと、componentsは忘れる。
scaffoldで作ったviewファイルのrhtmlを編集したいのですが、 別のテーブルのデータを参照したい時は、どのように記述すればいいのでしょうか?
ヘルパーメソッド link_toのパラメータに「:post => true」ってありますか?
またある場合は「:method => :post」とは違う意味があるのでしょうか?
『実践Ruby on rails』222ページ リスト7-26にあるのですが、
scaffoldで生成したlist.rhtmlはその部分が「:method => :post」になってます。
(書籍のソース: link_to 'Destroy', { :action => 'destroy', :id => memopage }, :confirm => 'Are you sure?', :post => :true )
書籍の使用Verは未記載のようですが、発行は'06/9/30、Gemsが0.9.0、
自分が使用のRailsは1.2.5、Gemsが0.9.4です。
↓を見る限りだと「:post => 〜」は見当たらないのですが。(検索だと少し見つかる。)
http://techno.hippy.jp/apidoc/classes/ActionView/Helpers/UrlHelper.html#M000321
今更かも知れないがAjax on Railsはかなり良書だと思う。 まいは本読んだ人にお勧め。
242 :
161 :2007/12/10(月) 21:34:27
あ、どうも。おひさしぶりです。 久々にrakeしてみたら、エラーで止まっちゃうや。。。 どうやら、grttextとRMagickが悪さしてるらしい。 なんかやっぱwinでコンパイルしたやつ使わないといけんのね。。。 誰か助けて・・・
>>239 ・コントローラでインスタンス変数に代入しておく。
・viewの中でそのテーブルのモデルに対してfindする。
・リレーションがあるなら該当インスタンスから取ってくる。
お好きな方法でどうぞ。
>>240 link_to :method => 'post' とすると、動的にformが作られてそのformの内容でpostするJavaScriptが挿入されるんだったかな。
:post => true なんてあったっけ?
> ・viewの中でそのテーブルのモデルに対してfindする。 これは却下だろ
>> ・viewの中でそのテーブルのモデルに対してfindする。 > これは却下だろ そうだよな。バリバリやってるけどw
せめてヘルパーメソッドの中に隠しておきたいところだな。
CruiseControl.rbで rake test:units実行時に 175 tests, 288 assertions, 5 failures, 126 errors rake aborted! Command failed with status (1): [/usr/local/bin/ruby -Ilib:test "/usr/local...] とならずに 175 tests, 288 assertions, 5 failures, 126 errors としかでず、 結果的にrake testが成功したとみなされて? 結果通知メールが送信されず困ってます。 別環境では想定したとおりにメール送信されるんで rake test:units実行時に失敗しているにもかかわらず rake aborted! Command failed with status (1): [/usr/local/bin/ruby -Ilib:test "/usr/local...] が表示されないことが原因かとあたりをつけているのですが・・・ 解決法あればよろしくお願いします。
ぎゃぼー Rails2になって動的scaffoldが外部プラグインになってね? ひどいじゃない。これじゃ10分プレゼンできないよ。 静的Scaffoldもなんか変だし、あかんわこれ。。。 Rails1系列はもうメンテされないのかなあ。
249 :
161 :2007/12/11(火) 05:27:13
>247 あ、それ、俺もなった。 なんかテーブルができてないのがあったみたいで、 rake db:migrate version=0(注:DBの中のデータが消えます。) を成功させて、(ここでテーブルが無いってエラーにならないかい?) rake db:migrate でDB再構築で治った。
250 :
デフォルトの名無しさん :2007/12/11(火) 11:09:11
>>238 2.0でcomponentsが無くなって、代わりに何を使うの?
pluginにしろってこと?
251 :
240 :2007/12/11(火) 11:20:34
Capistranoで app、web、dbでそれぞれ別のサーバを指定した場合 各サーバにsshでログインできる同名(パス)のユーザが 必要になりますか?
情報を仕入れたいのですが、2.0の話題で盛り上がってるところはどこですか?
254 :
デフォルトの名無しさん :2007/12/12(水) 18:19:01
ここ
双方のSessionIDをクッキーに吐き出すところをトラップして両方生成
>>255 PHPのセッション情報をファイルではなくDBに保存するように変更したら
Rubyと共有することができるんじゃないかな
2.0になって時期がムチャクチャ悪いけど、今Railsの参考書買うとしたらどれだろうか。 問題はgem install rails --include-dependenciesで落とすと2.0.1しか落とせないことだけど。
今は買うな、時期が悪い。 てか、バージョン指定で1.2.6入れられるんじゃないのか
時期が悪いのは承知なんだけど、すぐに使わなきゃいけなくなったもんで。 あとバージョン指定で1.2.6入れられた。thx
今ならやっぱりAgile Web Development with Railsの2版だと思う 前半をやるだけでかなり理解できるよ 1.2の機能を学べば、2.0にも比較的楽に入っていける
やっぱりRailsによるアジャイルWeb云々2版か。探してみるよ。ありがとう。
>>261 つい今その本を読み始めてるところなんですが、
「ruby1.8.5〜1.8.6ではブレークポインタを使用した時にいくつか問題が出ることがある」
と書いてあるんですが、ruby1.8.4を使うべきでしょうか?
ググっても見付からなかったんですが、探し方が悪いかな?
画像を send_file "hoge.png", :type => "image/png", :disposition => "inline" で動的に生成しているんですが、負荷が気になってキャッシュしようと caches_page に指定したところ、キャッシュされた中身が画像ではなく #<Proc:0xb77ef308@/home/20681/data/rubygems/gems/gems/actionpack-1.13.3/lib/action_controller/streaming.rb:68> というテキストになってしまいました。 ネットを検索すると、「caches_pageで画像も普通にキャッシュできるよ」と書かれたページしか 見つからなかったのですが、どう直したらキャッシュできるようになるか 分かる方おいでますか?
>>263 今はいってるのが 1.8.4でなければ、わざわざ戻すこともなく、
今の環境で問題でてから考えれば?
やってるプロジェクトのサイズと時間感覚とかによるとはおもうけど
開発してるあいだに 1.9ベースが十分によくなるかもしれないし。
x_send_file使った方がいいんじゃないの?
>>265 なるほど、ありがとうございました。
とりあえず1.8.5がパッケージで入っているので、これでいってみようと思います。
268 :
264 :2007/12/17(月) 20:33:48
なんか2.0.2が出そうだねぇ。(タグが打たれた)
お、あのバグが治るかな?明日チェックしとこ
2.0系でin_place_editing pluginが動かないんだけど…。(いま2.0.2にしてみた) Ajax.InPlaceEditorが更新した結果をPOSTする時にCSRF対策ではじかれて ActionController::InvalidAuthenticityTokenになるみたいです。 どーしたらよいのでしょうか?
初学者なんだけど、 Webなどの情報を便りにRails2に移行すべき?それとも、まだRails1で勉強していたほうがいいの? 教えてください
初心者なら情報が多い方を選択すればいいんじゃないの。 2系はまだ十分情報が回っているとは思えないが。
ですよねー でも、自分が覚えた情報が急速にobsoleteになって行くのが恐いのです(><) Rails1の開発はもうされないのですか?
どういう関係の初学者か知らないけど1からやっとけば良いと思う 保守の仕事まわされる可能性もある訳だし そうしてる間に2の情報も出回るしね そのころには保守案件を2にする提案もできるでしょう
Rails2.0ではセキュリティやパフォーマンス面での強化が結構あるし、 初学者なら絶対2からやるべき。 今から1系のスタイルになれちゃうのは時間的にも勿体無いよ
>277 それは1.x系で十分な基礎知識が付いた人への意見でしょ。 2系の教本もろくにないのにどうするの?
教本が出るまで永眠しておけばいいじゃないか
1.xの本で2.0やりゃいいんだよ。
>>237-238 くらい気をつけてればあまり変わらない。
scaffoldでできるものは全然違うけど、昔versionのscaffoldで出来たものは大体動くし
1.2のscaffold_resourceが2.0のscaffoldと思えば、1.2の教本で十分いけると思う
初学者にも、教科書に完全に従わないとダメな融通の利かない奴と、 適度に読み替えられるスキルのある奴がいるからな。
前者はプログラミングという行為に向いてないわな。
高い本買ってきたのにバージョンがひとつ違ってました 訴えます!(><)
中学校あたりまでの、まじめで成績もそこそこ上位な子のイメージ。>前者 言われたとおりには出来るけどそれだけ、という感じ。
>> a = Book.new(:id => 3000) => #<Book:0x2485380 @new_record=true, @attributes={"name"=>nil, "asin"=>nil, "chosha"=>nil, "shuppansha"=>nil}> >> a.save => true >> a.id => 1 >> Rails 1.2.6なんですけど、主キーに値を放り込む方法ないですか?
>>286 :idはデフォルトでHashを使うmass-assignment(まとめて代入)からは
保護されている。
attr_protected/ attr_accessibleを使うか、
明示的にa.id = 3000のように代入すればOKのはず。
>> a = Book.new => #<Book:0x24bbc3c @new_record=true, @attributes={"name"=>"", "asin"=>nil, "chosha"=>nil, "shuppansha"=>nil}> >> a.id=3000 => 3000 >> a.save => true >> a.id => 3000 >> うまくいってます。attr_protected/ attr_accessibleも調べてみます。ありがとうございます。
>>280 >1.xの本で2.0やりゃいいんだよ。
>>237-238 くらい気をつけてればあまり変わらない。
>scaffoldでできるものは全然違うけど、昔versionのscaffoldで出来たものは大体動くし
初心者にそんなことできるわけないじゃん。。。。。
それができるなら初心者じゃあないわな。
まったくの初心者は、買った本が対象としているバージョンではじめたらよろし。
初心者じゃなくなったら、2.0との差分を勉強すればいい。
とりわけアカウントとか権限に関するデータでattr_accessibleを不用意に 使うと攻撃の容易なアプリケーションになるので注意な。
Railsがお手軽すぎてプログラマの相場が暴落すんじゃないかとヒヤヒヤだったけど、 まだ大丈夫かも知れんな
また、C++みたいな迷宮言語を導入しないとまずいことになる
Dで
Windowsマシンで開発して Linuxでテストしたい場合ってどうやればよいの? Windows開発マシンに: MySQL/Apache2/rubly/Rails/Rudrails Linux: MySQL/Apache2/rubly/Rails インスコして、WindowsでOKならLinuxサーバにアップするってイメージ? どなたか例があれば教えてほしい…
Linuxで開発してWinマシンからアクセスすればいいんでないの
何を悩むことがあるのかさっぱりだな
297 :
294 :2007/12/24(月) 00:29:56
会社で支給されているのがWinマシンだから。
Railsの開発プロジェクトが走った場合にどうやってやろうかかんがえていたのよ。
WinマシンだけどLinuxインスコするべ
>>295 サンクス
coLinuxかVMwareでいいじゃん。
開発だけならWindowsで充分だと思うが
いやなにかとlinuxと絡むからlinux側で持った方がいいよ
rails2.0にしたら、protect_from_forgeryが勝手にsession使うせいで、 cookie不可のブラウザでまともに動かないんですけど、どうすればいいんですか。 protect_from_forgery=falseってのは一応無しで。
302 :
デフォルトの名無しさん :2007/12/25(火) 00:30:26
controllerですでにあるクラスとかモジュールのファイルをrequireしたいんですが、どこにファイルをおいてどうパス指定すればいいんでしょうか。
ふつうはlibに置く。 なお、ファイル名とクラス名を規則に沿ってあわせておけば、 requireしなくても自動的にロードされる。
>>301 セッション管理にCookieを使わなければいい。
CookieStoreのかわりにPStoreとかActiveRecordStoreとかMemCacheStoreとか
使えば回避できるはず
>>303 ありがとうございます。lib において読み込めました。
>>304 >>305 レスthx 調べてみた感じだと、挙動として、
1. railsがsession[:csrf_id]を設定
2. postする
3. session[:csrf_id]とフォームのダイジェスト値を比較
4. クッキーが無いからsession取り出せなくて比較失敗>エラー
という感じ?
ActiveRecordStoreをつかってみたけどダメだった(:secretは設定済)。
そもそもUAがsession_idを送ってくれないと解決しないような。
せめて、UAがクッキー設定不可ならそれを検知して、rails内部でエラー起こす前になにか
メッセージを出すか、ActiveHeartでsession_id引き回すように処理変えたいんだけど、
検知方法が分からん…。
それかrailsが投げるInvalidAuthenticityTokenエラーをどこかでキャッチできないかな。
とにかく、クッキー不可状態でpostするといきなりエラー画面ってのをどうにかしたい。
UAがブラウザの事だとすると、 単純にCookieを設定するページを必ず経由するようにして、 そのページで設定したCookie変数が読めるか読めないかで判断すりゃいいんでは。 1. 最初のページはクッキーを設定してLocation: でリダイレクト 2. 次のページでそのクッキーがあればフォーム表示、でなければエラー
>>307 ActiveRecordStore + ActiveHeartでは結局駄目だったの?
ソース読んだの大分前だからあいまいだけど、
たしかcsrf_idを使うのはCookieStoreのときだけで、
PStoreとかのときはsession_idを使ってたような。
どちらにしろCookieStore使わなければCookieは関係ないはずで、
ActiveHeart使えば自動的にうまく動いてくれてもよさそうだけどな。
>>308 うーん、でもそれだとURL直打ちで中に入られたとき、やっぱりpostされた途端
railsがエラー画面吐いちゃうよね。
>>309 ActiveHeartは
・UAがクッキー使えようが使えまいが、常にセッションIDがURLにくっついちゃう
>なので、UAがクッキー対応の時だけTransSidしたい。でもその検知方法が分からない。
・セッションID名を_session_idに変更しないとリクエスト毎にsidが変わっちゃう。
>どっか設定いじってなおせるの?でもそれじゃ同一鯖で2つのrailsアプリ動かすと問題あるし。
と言うかんじ。
> PStoreとかのときはsession_idを使ってたような。
> どちらにしろCookieStore使わなければCookieは関係ないはずで、
結局session_idは(TransSid使ってる時以外)クッキーに書いてあるんだから、
セッションの格納方法は関係なくない?
311 :
308 :2007/12/26(水) 09:21:42
>>310 1. と 2. を同じURLにすればいいんじゃないか。
GETクエリーを工夫すればいいっしょ。
1. cookieなし、かつGETのフラグなし: Cookie設定してLocation:でGET変数つきカレントページへ
2. cookieなし、かつGETフラグあり: Cookie使えねぇ
3. cookieあり、かつGETフラグあり: Cookie消去してフォーム表示
GETのフラグを適当に工夫すれば2.のGET付きURLを直打ちされた対策も
ある程度出来るだろう。cookieの値と等しいときだけフォーム表示とか、
IPとアクセスタイムからハッシュを作るとしてかさ。
Ruby 1.9 リリース マルチバイト対応・処理高速化
マルチバイト対応してなかったって?? m17nって奴だよね、あれって何が変わるんだ。相当苦労してるみたいだけど。 多言語化対応といっても色んな意味合いがありそうで混乱
さすがに、railsとruby本体のバージョンアップを両方やるのは死ぬ
rhtmlで生成されるマークアップってインデントがきちんと出来なかったり (yieldで部分テンプレートを呼び出す場合など)、 無駄な改行ありがいやなのですが、これを直す方法とかないでしょうか? hamlとか他の文法に移れというのは無しで。
partialのインデントが崩れるのは、<%- で解消できんのよなぁ。 俺も知りたい。
俺、Railsのインストールが終わったら、結婚するんだ。
運用できる頃にはどうなってるんでしょうね
スタッフロールが流れます
コールバックの after_save で関連テーブルへのアソシエーションを行いたいのですが、ActiveRecord::Base#new や update_attributes に余計なパラメータを渡すとエラーになってしまいます。 エラーにならない適切な方法があるのでしょうか?
余計なパラメータってどんなパラメータよ? 言ってる意味わからんから具体的なコードを晒してみ
322 :
デフォルトの名無しさん :2008/01/04(金) 09:52:17
gem update --system が遅い。遅すぎる。丸一日放置してるのに‥
御免回線工事中です
324 :
デフォルトの名無しさん :2008/01/04(金) 13:13:31
>>323 マシンスペックが影響してるみたい。仕事につながることなんでメインマシン(Turion64MT34)
をFedoraマシンにしてrails乗せたらものの10分。
どーせパナのS51ですよ。ふるーいCeleronマシンですよ、とか言ってふて腐れてます。
mongrel脂肪でruby厨涙目w
326 :
デフォルトの名無しさん :2008/01/04(金) 17:48:18
溜まりに溜まった怒りが爆発したって文章だな mongrel死亡となると、もうマトモに動かせるサーバ環境なんて・・・
Mongrelで会社でも起こせばよかったのにな。 スルー力が足りなすぎる。FLOSSの良さってのは作ってみたけど好きにして ってことだからバカに付き合うことなんてないのよ。 MBAが欲しかったならサポートなんてせずにMBA
を取りにいけばよかっただけ。Linux Kernel開発者でもそうしてる人がいたよ。
うわ、いつの間に「lighttpd使えねー」ってことにww
lightyのmod_rewriteがapache並になんでもありだったらなぁ。
1年経ったらmongrelってあったよねー、ひと騒動あったよねー みたいになってるかもしれんが。 まぁ1年経ったらrailsってあったよねー、ってことになってないとも限らんけど。 どっちにしても、こういう騒動は本人の将来のためにもならないけど、 愚痴ってる経歴を見る限り、元々自己管理ゼロのようだから、 何に手をつけても一緒のような希ガス。
333 :
デフォルトの名無しさん :2008/01/04(金) 18:52:18
WEB開発者が学ばなければいけない技能トップ10教えて
とりあえず、今ならmongrelの代わりに何使うのがお勧めなの? 今までmongrelで決まりと思ってて真面目に調べてなかった
安易に質問せずに自力で解決する能力
336 :
デフォルトの名無しさん :2008/01/04(金) 19:15:09
>>335 技能として抽象的なので却下
1位 JAVA
2位以下きめて
http
339 :
デフォルトの名無しさん :2008/01/04(金) 21:20:58
1位 JAVA 2位 http 3位
半角にするか全角にするか統一してくれない?
341 :
デフォルトの名無しさん :2008/01/04(金) 21:26:22
1位 java 2位 http 3位
1位 java 2位 http 3位 tcp
とうとうJRuby覚えなきゃなんなくなったか。 面倒くせぇーなぁ・・・
344 :
デフォルトの名無しさん :2008/01/04(金) 22:53:50
1位 java 2位 http 3位 tcp 75位 rails
WEB開発者が学ばなければいけない技能top100 1位 java 2位 http 3位 tcp 4位 how to deploy 75位 rails
346 :
デフォルトの名無しさん :2008/01/05(土) 02:03:33
deploy 【自動】 配置{はいち}につく、分散{ぶんさん}する、展開{てんかい}する 【他動】 〔軍隊{ぐんたい}などを〕配備{はいび}[配置{はいち}・展開{てんかい}]する、〔布陣{ふじん}を〕敷く
1位 java 2位 http 3位 tcp 4位 how to deploy 10位 autostimulation 75位 rails 5134位 act of lovemaking
>>333 マジレスすると、まず Javascript
349 :
デフォルトの名無しさん :2008/01/05(土) 11:53:41
1位 javascript 2位 java 3位 http 4位 tcp 5位 how to deploy 10位 autostimulation 75位 rails 5134位 act of lovemaking
スレ違いだろ
xml
353 :
デフォルトの名無しさん :2008/01/05(土) 13:22:48
1位 javascript 2位 java 3位 http 4位 tcp 5位 how to deploy 6位 xml 10位 autostimulation 75位 rails 5134位 act of lovemaking
354 :
デフォルトの名無しさん :2008/01/05(土) 14:11:17
lovemake 該当件数 : 0件 lovemake に該当する項目は見つかりませんでした。
acts_as_make_loveとかhas_many_loveプラグインの事じゃない?
356 :
デフォルトの名無しさん :2008/01/05(土) 22:23:04
なにそれ
SQLが抜けている件について
358 :
デフォルトの名無しさん :2008/01/06(日) 00:20:50
1位 javascript 2位 java 3位 http 4位 tcp 5位 how to deploy 6位 xml 7位 MySQL 10位 autostimulation 75位 rails 5134位 act of lovemaking
>>359 んなくだらないことばっかやってる(しかできない)から、
まともなプログラマに詰られる。
361 :
デフォルトの名無しさん :2008/01/06(日) 02:30:29
1位 javascript 2位 java 3位 http 4位 tcp 5位 eclipse 6位 xml 7位 MySQL 10位 autostimulation 75位 rails 5134位 act of lovemaking
unix
363 :
デフォルトの名無しさん :2008/01/06(日) 03:10:59
1位 javascript 2位 java 3位 http 4位 tcp 5位 eclipse 6位 xml 7位 MySQL 8位 UNIX 10位 autostimulation 75位 rails 5134位 act of lovemaking
Flashは?
365 :
デフォルトの名無しさん :2008/01/06(日) 03:19:13
1位 javascript 2位 java 3位 http 4位 tcp 5位 eclipse 6位 xml 7位 MySQL 8位 UNIX 9位 Flash 10位 autostimulation 75位 rails 5134位 act of lovemaking
お前らそろそろ、Pythonの話にもどろうぜ
じゃあ、Pythonのうんこなインデントについてでも語るか?
誤爆 roz
369 :
デフォルトの名無しさん :2008/01/06(日) 12:13:07
1位 javascript 2位 java 3位 http 4位 tcp 5位 eclipse 6位 xml 7位 MySQL 8位 UNIX 9位 Flash 10位 autostimulation 75位 rails 5134位 Python
roz
371 :
デフォルトの名無しさん :2008/01/06(日) 18:09:35
1位 javascript 2位 java 3位 http 4位 tcp 5位 eclipse 6位 xml 7位 MySQL 8位 UNIX 9位 Flash 10位 roz 75位 rails 5134位 Python
372 :
デフォルトの名無しさん :2008/01/06(日) 20:19:42
流れ豚切りで申し訳ないが、おまえら教えてください。 教科書通り database.yml に development, test, production の定義をして、 rake db:createして、rake db:migrate RAILS_ENV=test して動かしているのに、 なぜかアプリが見に行くDB が test でなく development になってしまいます。 どこかで定義してるのでしょうか? 今日半日悩んでます。よろしければ教えてくださいおながいします。
本当に教科書どおりやってるのかと聞きたい
ruby script/server --environment=test とか言う話?
そういうのはもういいから、まずはApacheとの連携を強化しろと。 とりあえずfcgi.rbを取り込んどけ、と。Rubyは筋がすごくいいのに 人がぜんぜんいないなあ・・・。
質問です。 本テーブル| 1:N |頻度テーブル(TF値とか)| N:1 |Wordテーブル ID | |ID | |ID タイトル | |hon_ID | |Word 著者 | |word_ID | |TF | ってゆー三つのテーブルがあるんですが、モデルにhas_many とかスルーとか使ったりして書き込みました。 で、さらに、user/namae/rubyに本のタイトル、著者、が一行目と二行目に書いてあるテキストファイルがあるんですが、 国家の品格 藤原さん あいうえおあいうえお・・・(ほんの見出し) ↑ってゆーテキストです。 そいつを勝手に読み込んで本テーブルの要素に自動登録したいんですが、モデルにどう書けば良いか教えていただけないでしょうか? できれば書いていただければうれしいです。
378 :
デフォルトの名無しさん :2008/01/07(月) 16:14:54
>>374 >ruby script/server --environment=test
知らなかった。どうもありがとう。
ところで、フリーでRailsで残業月70くらいで単価60万って安いよね??
お前のレベルなら高すぎるくらいだ
3つのテーブルA,B,Cがあり、Bは中間テーブルです。それぞれ、AとBは1対多、BとCは多対1、AとCは多対多の関係にあります。 BはAのIDとCのIDを要素に持ち、さらにもう一つTFという要素をもちます。 この辺りの設定をどうモデルに書き込めばよいかわかりません。 has_many throughtとかbelongs_toとかはおそらくうまくいったと思うのですが、BのA_idがAのidと一緒だよってことをしたいのですが、教えていただけないでしょうか・よろしくお願いします。
それでわかりやすくしたつもりなのか・・・
>>380 こんなのパターンかい?
A: customer(id, name)
B: subscription(id, customer_id, magazine_id, paid, expire_at)
C: magazine(id, title)
class Customer < AR::Base
has_many :subscriptions
end
class Magazine < AR::Base
has_many :subscriptions
end
class Subscription < AR::Base
belongs_to :customer
belongs_to :magazine
end
383 :
デフォルトの名無しさん :2008/01/09(水) 01:13:31
こういうエラーが出るんだけど誰か解決策しってますか? 教えてください。 Errno::EPIPE Broken pipe RAILS_ROOT: /xxx/config/.. Application Trace | Framework Trace | Full Trace /usr/lib/ruby/1.8/mysql.rb:1042:in `flush' /usr/lib/ruby/1.8/mysql.rb:1042:in `write' /usr/lib/ruby/1.8/mysql.rb:462:in `write'
384 :
380 :2008/01/09(水) 01:41:23
>>382 さん
まさにそんなパターンです。そこまでは書けるんですが、
<<とか使ってAが登録されたらBのA_idも登録される〜とか書きたいです。
それだけで分かったらエスパーだと思う
>>384 c1 = Customer.find(1)
m1 = Magazine.find(1)
c1.subscriptions.create(:magazine => m1, ...)
とか
c1.subscriptions << Subscription.new(:magazine => m1, ...)
などとするとsubscriptionのcustomer_id は自動的にc1.idが入るんじゃね?
387 :
383 :2008/01/09(水) 02:29:40
383も忘れないでけれ〜
ちなみに has_many :magazines, :through => :subscription としておくと、 c1.magazines << m1 でOKのはず。 あと、c1は必ず実体が必要なんで、newで作った場合は先にsaveしておく
MySQLデータベースでの書き込み失敗?心当たりは?
390 :
380 :2008/01/09(水) 11:54:10
>>388 >>386 さん
AとCは多対多なので、AとCのモデルに
class Customer < AR::Base
has_many :subscriptions
has_many :magazines, :through => :subscription
end
(同様にmagazineにも)
として
c1.magazines << m1
でOKのはず。
あと、c1は必ず実体が必要なんで、newで作った場合は先にsaveしておく
をするってことで良いですか?
391 :
380 :2008/01/09(水) 12:01:07
超わかりにくくてすいやせん。382に付け足す作業として has_many :magazines, :through => :subscription そんでもって c1.magazines << m1 (その前に.saveする) を付け加えたらいいですか?ってことです。
とりあえず自分で試してみりゃいいだろが・・・あほか、氏ね。 あと、:throughのところは上の行に合わせて:subscriptionsと複数形な、念のため
393 :
デフォルトの名無しさん :2008/01/12(土) 10:48:41
無職のプログラミング未経験者です。 Ruby on Railsを使う仕事を見つけましたが、 Rubyは初心者向けの本を半分読んだくらいです。 そこから、開発現場でそれなりに使えるレベルになるには、 何ヶ月くらいかかるのでしょうか?
1day
本人次第だろ、こんなもん
こういう人材が押し寄せてくれば、そりゃ、ゲットーにもなるわな。 393は責任感をもって仕事&勉強に励んでくれ。
半分ってのがいい味だなw
半分っていうとハッシュの辺りかな
ヒント: 本を半分読んでいて、プログラミング未経験
普通は本読んでると先を早く読みたくて一気に読んでしまうけどね 半分でやめるとしたら本気でやる気がないか本が糞だったかどっちか
そうかね。 俺は少なくとも技術書でそんな気にはならんけどね。 若い頃は仕方ないから我慢して読み進めたけど、 今なら必要に応じて必要な箇所を拾い読みするだけで充分なんで、 大分楽になった
半分は関数リファレンス
俺も技術書を一度一気に読み上げちゃうなぁ。 そのあと色々試しながら、つまんで読む感じだなー
1年くらい前にそれでハマったっけなー。
これからsqlite使う予定だったw ありがてぇ
> UNIXとMac OS Xでは、sqlite-ruby gem や sqlite3-ruby gemを インストールする前にswigが > インストールされてないといけない。そうしないと、gemは本当のsqliteライブラリを利用できない上、 > デフォルトで代わりにインストールされるピュアrubyのsqliteライブラリは正しく動かない。 ちょおおおw あぶねーなw Pure Ruby版使えなくしとけやww
408 :
masuidrive :2008/01/16(水) 12:12:24
>>386 gem install mysqlで直らないかな?
ファイルの内容が正しいMIME形式であるか?、 マルチパートであるか?、といったチェックをしたいんだけど いい方法ないでしょうか? rmailはいまいちっぽい・・・
410 :
409 :2008/01/17(木) 12:31:24
形式チェック事態はrmailでいけそうだけど、 file_fieldをつかってアップロードしたファイルだとうまくいかないっぽい・・・ file_fieldであげたファイルはStringIOオブジェクトで取得されるみたいだけど このオブジェクトを使用してparseすると正しい形式のファイルでも そうでないとみなされてしまう。 なにがいけないんだろう・・・? 同じファイルを直接opne('ファイルのパス')とかでFileオブジェクトとかで とれれば正常にparseできるんだけど、実際のファイルパスは この時点ではわからないしどうしたものか(;´Д`)
本質的な解決ではないけれど cgi.rbがfile fieldで受け取ったファイルはTempfileとStringIOの場合がある。 Tempfileオブジェクトの場合はlocal_pathというメソッドで実際のパスが分かる。 StringIOの場合は、readして全部一時ファイルに書き込んでしまえばよいんじゃなだろうか。
412 :
デフォルトの名無しさん :2008/01/20(日) 00:28:10
rails2.0.2でruby script/generate scaoffold ave name:stringのように
モデル名に*ve(aveやliveなど)を指定してscaffoldすると、
http://localhost:3000/avesアクセス時に 、index.html.erbの最後の行の
<%= link_to 'New ave', new_ave_path %>でundefined local variable or
method `new_ave_path' for #<ActionView::Base:0x3056bd10>となって
しまうのですが、どのような理由か判りませんでしょうか。
※該当行のnew_ave_pathを:action=>'new'に書き換えるとエラーは出なく
なりますし、*ve以外のモデル名なら、例えばabeならnew_abe_pathでも
エラーは出なくなります。
※DBはsqlite3を使用。windowsXPでもlinux(debian etch)でも
ruby1.8.6-p111、gem1.0.1で確認しました。
"ave".pluralize.singularize # => "afe" なせいかね? config/initializers/inflections.rbで明示的に設定したら解決するかも。
414 :
デフォルトの名無しさん :2008/01/20(日) 08:08:44
ご説明ありがとうございます。 Inflector.inflections do |inflect| inflect.singular /ves$/i, '\1ve' end または(モデル名がaveの場合) Inflector.inflections do |inflect| inflect.irregular 'ave', 'aves' end でエラーはでなくなりました。 ※scaffoldで自動生成されたのに、inflectionsで単数<->複数の変換の 条件を設定しないと正常動作しない場合もあるのですね。
rails以前に?#はエスケープしなきゃ
417 :
415 :2008/01/20(日) 21:38:08
>>416 urlエンコードを忘れてた、ありがとう
>>393 です。
レス遅れてもうしわけありません。
PCが調子悪くてパーツ取り替えてました。
>>394-
>>401 >>393 を書いた時点では、ハッシュの次、正規表現の部分を読んでいました。
もう全部読み終わったのですが、いちいち試しながら読んでいたため、
かなり時間がかかりました。
読み終わった現時点では、どこをどうすればWebアプリが作れるのかよくわかりませんが、
とりあえず他の本を探してみます。
アホな質問にレスをくださりどうもありがとうございました。
とにかく本の真似して実際にコードをガリガリ書いてくことだね。 全くの猿真似でも結果ちゃんと動いたら嬉しくて、プログラムが楽しくなる。 まぁ頑張ってくれ
railsのviewでクエリに対して出力結果を提示するんですが、出力結果を A、B、1 A、B、2 A、B、6 と表示されるのですが、これを A、B、(1,2,6)って表示したいです。 ソースは 式 do |gaku| <% popo = C.find(:first, :conditions => ['id = ?',hensuu.youso5]) -%> <p><%= gaku.youso1 %>: <%= gaku.youso2 %>: <%= popo.youso8 %></p> です。
Vでfindねえ。
センスがイケてないのをお許しください・・・
入力された値を用いて外部APIを呼び出し その結果を成形して出力するRailsウェブプログラムを書こうとしています。 このとき、外部APIに値を渡す前に、入力された値を検証したいのですが どのようにしたら良いでしょうか? modelの作成や更新時の値の検証方法は見つかったのですが、 探し方が悪いのかそのような時の例は見つかりませんでした。 ご助言いただけると嬉しいです _ _
>>423 attr_accessor じゃダメかのぅ?
>>420 result = gakus.
group_by {|g| [ g.youso1, g.youso2 ] }.
map {|key, values| key + values.map(&:c_id) ] }
みたいな感じか?
とりあえずgroup_byの結果までをscript/consoleで見てみればどうmapする
べきか見えてくるだろう。
>>425 すいません、mapって何してるんでしょうか?
ググってみたんですが、いまいちわからなかったです。
hash
428 :
デフォルトの名無しさん :2008/01/22(火) 15:42:23
サイト上にボタンを設置して、 ボタンをクリックするとファイル(拡張子はrb)が実行され、 結果が表示されるという機能をつけたいのですがプログラムがわかりません。 ぜひ方法を教えてください。 ちなみに、ボタンは <%= start_form_tag :action => アクション名 %> <%= submit_tag '文字列' %> <%= end_form_tag %> で設置できるということはわかっています。 これを応用すればいいのでしょうか。
>>426 values.map(&:c_id) は Rails というか ActiveSupportの拡張で、
意味は values.map {|gaku| gaku.c_id } 。mapはcollectと同じ。
group_byの結果を見れば、valuesが gaku の配列になるのが
わかるはず。これをc_id だけの配列( [1, 2, 6 ]とか)に変換している。
>>428 def アクション名
@result =open('| /usr/games/fortune') {|io| io.read}
# 適宜HTML化すること
end
431 :
デフォルトの名無しさん :2008/01/23(水) 14:14:59
>>430 ありがとうございます。
Ruby初心者なので、できれば詳しく教えてください。
def アクション名
@result =open('| /usr/games/fortune') {|io| io.read}
# 適宜HTML化すること
end
これは、コントローラに記述するんですよね。
実行したいファイル名は('')の中に記述すればよいですか?
あと、この場合
<%= start_form_tag :action => アクション名 %>
<%= submit_tag '文字列' %>
<%= end_form_tag %>
の部分はどう書き換えればよいのでしょうか。
>>431 Webからバッチ見たいなrb動かしたいだけなら
Controllerに
RUBY = '/usr/local/bin/ruby'
def hoge
foo = `#{RUBY} /home/hoge.rb`
flash[:notice] ="#{foo}を実行してみた"
redirect_to :action => 'index'
end
VIEWに
<% form_tag( :action => 'hoge' } do %>
<%= submit_tag 'hoge実行' %>
<% end %>
じゃダメか?
>>432 <% form_tag( :action => 'hoge' } do %>
の } は ) な・・・スマネ。
434 :
430 :2008/01/23(水) 15:57:28
あ、Rubyの``はシェルと違って改行とかをそのままキープするってのを忘れてた。 openとか使わなくてもいいですね。
435 :
デフォルトの名無しさん :2008/01/23(水) 16:06:41
rails2.0で、非モデルフィールドの値をparamsハッシュに保存する方法が 分かりません。 下のようにしましたが、どこが駄目なんでしょうか? # enter.html.erb NAME: <%= text_field('params[:arg1]') %> # xxxx_controller.rb @data = params[:arg1] # show.html.erb こんにちは、 <%= @date %>さん
>>435 1. エラーになるならそう書く。ならないなら期待した結果と
実際の結果を書く。
2. ログを見ればどういうパラメータが渡ってきてるかわかるし、
<%= debug(params) %>
で見ることも出来るから、本当に保存されていないかどうか
確認すべき。
3. 最後のはtypoだとして、
text_fieldではなくtext_field_tagのほうを使えばよいのでは。
437 :
デフォルトの名無しさん :2008/01/23(水) 19:29:17
>>436 ありがとうございます。
text_field_tag を使って、<%= debug(params) %>を実行すると下の
値しか表示されませんでした。
--- !map:HashWithIndifferentAccess
action: show
id: "1"
controller: posts
<%= text_field_tag('params[:arg1]') %>の第一引数を「':arg1'」などに
しても、debugで表示してくれません。
他にどのようなことにトライすればいいでしょうか。
:arg1 もしくは 'arg1' は試した?
>>428 はmixiでも同じこと質問してやがったゆかまんってやつだな。
お前らも親切だね
440 :
デフォルトの名無しさん :2008/01/24(木) 16:27:08
>>438 params[:arg1]でOKでした。
しかし根本的原因は、リダイレクトしているメソッドだったから
のようです。
ありがとうございました。
441 :
デフォルトの名無しさん :2008/01/24(木) 19:55:35
レンタルサーバでrailsを使いたいんですが、 ScriptAliasでcgi-bin以下しかcgiが実行できない場合にrailsを使用することは可能なのでしょうか?
>>441 共有サーバーで、rails を cgi で動かすことは速度的に現実的ではない。
むしろ、他の人の迷惑(鯖運営主や、同じ鯖の人に)
443 :
デフォルトの名無しさん :2008/01/27(日) 01:43:29
Ruby on Rails を入れてみたのですが、 No such file or directory - /tmp/mysql.sock って怒られます。ぐぐってみたら MySQL を localhost で動かしてる場合の 解決策はすぐに見つかったのですが、自分の環境では MySQL を 別ホストで動かしているため、ローカルに sock ファイルがありません。 この場合、どのような設定をすればいいのでしょうか?
>>443 ですが、自己解決しました。
config/database.yml を書き換えた後 server を再起動してませんでした。
失礼いたしました。
445 :
デフォルトの名無しさん :2008/01/28(月) 19:01:03
プログラムに関して質問があります. データベースに登録した2つのテーブル内のカラムの類似度を求めたいんですが,ベクトル空間モデルにおける コサイン尺度を用いて類似度を求めようと考えています. しかし,コサイン尺度をどうプログラムで表せばいいのかがわかりません. どなたか教えていただけませんか? ↓RoRで作成したデータベースのテーブルとカラム ・Book(id, name) ・Word(id, noun) ・Relation(id, song_id, word_id, tf) ・User(id, user_name) ・Reference(id, user_id, Word_id, vector) Relationテーブルでは,Bookに登録した書籍と,各書籍内に出現する単語を関連付けています. Relationのtfとは各単語の出現頻度を登録しています. そして,Userが選択したBookが持つwordのTFをvectorに登録する仕組みになってます. なのでRelationテーブルにある各bookが持つword_idと, Referenceテーブルにある各userが持つword_idは同じ数だけあります. この2つのテーブルにある「tf」と「vector」の類似度を求めたいんです! 「tf」を本ベクトル,「vector」をユーザベクトルとして,ベクトル空間ベクトルとして, 類似度を求めたいんです. どなたか,この2つのベクトルの類似度を計算するプログラム,教えてください!!
SongってのはBookの間違いなんだろうな。 一見したところRailsじゃなくて数学の問題じゃね? コサイン尺度というものの定義を知らないと答えようがないと思う。 ベクトルの内積をそのまま類似度と見なしたりするの? 丁度、一致したらゼロになるし。
直交したらゼロになるの間違いだろ
うはー、素で間違えた。1になるのはcos0だな。
449 :
デフォルトの名無しさん :2008/01/29(火) 00:31:08
>>445 です.
コサイン尺度の計算式はあるのですが・・・
プログラムでの書き方がわからないんですよね.
類似度を求めたいのでコサイン尺度じゃなくてもいいのですが,
プログラムでどう書けばよいのかわかりませんかね??
式の説明を書いたら?
>>449 数式を書けば誰かが Ruby に直してくれるさ
>>445 , 449
言ってることがよく分からないんだけれども,
本ベクトルとユーザベクトルでは次元が違うからそもそも
一個の VSM として扱えないんじゃないの?
それぞれベクトル空間を張ってということなら分かるんだけど.
余弦を出したいなら
ふたつのベクトルの内積をそれぞれの長さで割ればいいんじゃない?
v1 * v2 = |v1||v2|cosθ だから.
内積と長さくらいはどう書けばいいか分かるでしょう.
それか線形代数演算の含まれるライブラリを使うか.
453 :
デフォルトの名無しさん :2008/01/29(火) 09:21:00
>>445 Rails関係ないから、他で聞いた方が良い意見をもらえる気がする
fastcgiが無いとどのくらい遅いんだろう railsはいかんせんメモリリソース食い過ぎだよな
456 :
デフォルトの名無しさん :2008/01/29(火) 13:31:06
>>445 です.
>>452 さん
本ベクトルとユーザベクトルは同じ次元のベクトルになると思います.
それぞれベクトル空間モデルに位置していると考えています.
コサイン尺度の計算式を書きます!
cos(dj,q)
=(Σ_[i=1, m] dij*qi)/(√(Σ_[i=1, m] dij^2)^(1/2)) * (√(Σ_[i=1, m] qi^2)^(1/2))
※q=検索質問ベクトル,dj=各文書ベクトル
となっています.
また,dj*q はベクトル間の内積を表していて,
dj*q = Σ_[i=1, m] dij*qi
となってます.
少し複雑な計算式ですが,とりあえず書いてみました.
どなたかRubyになおしてもらえるならお願いします(×_×)
railsと全く関係ないのによく質問できるよな…学生さん? 金払ってはてな人力で聞けばもっと早く解決するのに
458 :
457 :2008/01/29(火) 13:45:01
宿題スレで聞いたらみんな喜んで教えてくれるよ〜マルチになっちゃうけどそっちで聞いてみたらどうかな?
Rails2.0試してみてるんですが、 foods_controller に select というメソッドを定義しても、/foods/select でアクセスできません。 'config/route.rb' に何か書かなきゃいけないみたいなんですが、サンプル見てもよくわかりません。 どなたかアドバイスをお願いします。 やりたいことは、foods_controller に select というめそっどを定義して、ブラウザからアクセスできるようにすることです。
find_allダメになったのか・・・
>>462 find(:all, ...) にしろってことだね。
>>460 それだけじゃ何もわからんよ。取り敢えずエラーログ見せてみ。
まさかviews/foods/select.html.erbがないとか言うオチじゃないだろな・・・
普通に考えればそうだろ
どんなSQLが発行されたかのログとか見れますか?
はい。
468 :
466 :2008/01/30(水) 08:21:43
railsのログ見たら普通に記録されてますね ごめんなさい
link_toの第一引数がエスケープされないのは仕様?
link_to h(text) とするんだ。
いや scaffold はそんなことしてないし 後のバージョンで変更されたら面倒じゃないけど混乱するじゃん
find_by_hogehogeとかってAPIドキュメントの何処に載っているんでしょうか? どなたか教えてください
>>472 ActiveRecord::Base
Dynamic attribute-based finders
474 :
472 :2008/01/30(水) 20:55:29
見つかりました。ありがとうございます _ _
>>471 scaffoldの出力みてみたが、
固定でエスケープ不要なのが分かってる文字列ばかりじゃないか。
link_to 'Show', book
link_to 'Back', books_path
link_to 'Edit', edit_book_path(book)
link_to 'Destroy', book, :method => :delete
link_to 'New book', new_book_path
ちなみに link_to image_tag(...), url なんてこともできる。 link_to_imageがdeprecatedになった際に そうするようにドキュメント化されているので、 link_toが勝手にエスケープするようになることはないだろう。
477 :
デフォルトの名無しさん :2008/01/31(木) 11:20:06
Rails2試してみてるんですが、 「undefined method `model' for ApplicationController:Class」って エラーがでます。 Rails2では、非ActiveRecordの取扱いはどうなっているのでしょうか? -- class ApplicationController < ActionController::Base model :cart end class Cart # /app/model/cart.rb .. end
478 :
デフォルトの名無しさん :2008/01/31(木) 14:28:18
win2003 serverでBackgrounDRbを使ってるんだけど、 BackgrounDRbを介した処理だけdevelopment.logにログを吐き出しちゃう。。 backgroundrb.ymlって切り替えるのはDBだけなのかなぁ?
>>477 2.0系列ではmodelメソッドはないようですね。
* Deprecated all of ActionController::Dependencies. All dependency loading is now handled from Active Support [DHH]
そもそもmodelってARか非ARかは関係なかったような。
480 :
デフォルトの名無しさん :2008/02/02(土) 22:01:24
Railsを初心者が勉強するのにいい本はありますか?
>>480 何の初心者かによるけど、WEBアプリプログラミング自体の初心者なら、
「基礎Ruby on Rails」がいいよ。
初心者はWEBプログラミングすんな by Matz
ブログで言ってた事じゃないか
>>482 漏れはその点については同感なんだが
初心者はwebプログラミングしない方が良いと思う
まじで
穴だらけは確実だからな 実際そうだし
ローカル環境で基本的なCGIプログラムであれこれ遊んで、 それからいろいろフレームワークに手を広げたり、サービスの公開に 進んでね、とは思うな。 その基本を押さえていれば言語はたいしたマターじゃない。
かといって”俺は初心者じゃないからWEBプログラミングやる!”って思ってるやつも危なげw ま、そんなこといったら一生その世界に入れなくなるんだけどさ。
>>482 あれは、普通に「Rubyを使ってWebプログラミングやってね(はぁと)」って
意味じゃないの。日本でもrubyが入ってるサーバー増えてきたじゃん。
tdiaryとかhikiとか結構なシェアあるでしょ?(にしてはHikiは結構な割合で脆弱性が
見付かるな。そういやruby-lang.orgも浸入さわぎなんかされてたな。Webをなめるな?)
>>489 反対の意図があると読んだ。Rubyが注目されるのはいいけど、
PHPで品質の悪いコードを書いている人達がわんさと流入してくると困ると。
Rubyバブルの崩壊を恐れて自ら釘を刺したという感じ。
>>489 > そういやruby-lang.orgも浸入さわぎなんかされてたな。
あれはwebサービスからではない。
浸水したわけでもないが。
>492 ネタだよな? な?
腹筋がよじれた(。ω゜)
ワラタぉ
>481 480じゃないけど、その本買ってみる ありがとおぉ
初心者にいいって宣伝文句使うなってMatzが言ってた
こういうネタも一瞬本気なんじゃないかと思わせるところが怖い。
すごく基本的なことでごめん。 PublisherとBookというmodelがあって、 Publisher has_many Book という関係であるとき、 オライリーという名前の出版社の本を調べたかったら Publisher.find_by_name("オライリー").books とすればよいのは分かるのだけど、その逆で ISBNコードが4900900095の本を出している出版社を調べたかったら pid=Book.find_by_isbn_code("4900900095").publisher_id Publisher.find(pid) と、ほんのちょっと込み入った書き方をしないといけないですよね? もっとスマートな書き方はないですよね?
Bookにpublisher_idがあるなら class Book < AR::Base belongs_to :publisher end も同時に宣言しておけば publisher = Book.find_by_isbn_code("4900900095").publisher と出来るはずよ。
prototype の $F() (= Form.Element.getValue()) を ruby のコード内で使うにはどうすればいいでしょうか? たとえば id='q' のフォームがあって button_to_function '検索' do |page| query = <$F('q') でフォームの値を取得> page.redirect_to :controller => 'documents', :action => 'search', :q => query end こういう感じことをやりたいのですが
>>501 あれ。所有側からも同じように書けるんだっけ。ありがとう。やってみます。
amazonはタイムマシンでも発明したのか? 2/6到着予定の本が2/5に届いたぞ
タイムリープ能力のある鳥か飛脚では?
逆に考えるんだ
>>504 の住んでいるところだけ時空間が乱れている、と・・・
そうか、だから俺は毎度毎度遅刻するんだな
昭和の頃ならともかく、最近の飛脚は時空くらい普通に飛び越えるよ。
aptanaのradrailsで開発してる人いますか? =begin =end これのコメントアウトってバグってますよね?
>>497 誤植が多いとなおさら初心者に悪くねーか?
512 :
デフォルトの名無しさん :2008/02/07(木) 20:33:11
リダイレクトってどうやったらできるの?
何を何にリダイレクトしたいんだ?
>>511 それは否定できない
真剣に読んでれば誤植かどうかわかるんだけど(Amazonレビューでも書いてた
Rails+Rubyの基礎本としては他にイマイチ選択肢が無いんだよな
>>510 > =begin
> =end
>
> これのコメントアウトってバグってますよね?
どういう意味?
何が、どういう風に動くべきだと思ってて、
実際にはどんな風にうまく動かないの?
>>516 RailsのバグじゃなくてあくまでIDEの話です
複数行をコメントアウトしたくて該当の記述をした途端に、RadRailsの挙動がおかしくなる
うまく表現できないんだけどエディタが壊れるというか…とにかくまともに動作しなくなる。該当の記述を消すと元に戻ります
RadRails 0.9.3.6479 だけど、普通にコメントアウトできるよ。 前のバージョンだと自分も begin end 形式のコメントアウトが できないことがあった。
active_scafolld で関連を設定したとき edit 画面で出るサブフォームのカラムの順番はどうやったら設定できるんでしょうか?
>>520 しろうとの適当回答で悪いが、
=begin =end は「コメントアウト」ではなくて「埋め込みドキュメント」というみたい。
=begin と =end は行頭から書かないとだめ(インデントしてはだめ)なのかもしれない。
エラー表示が「multine comment ...」だったらこれが原因じゃないかな。
>>522 エロサイトの宣伝は珍しいな。
Railsには見えんが・・・
built width で鯖構成しらべようとしたら、403ではじかれた('A`)
ワラタw
Application error (Rails) ワロッシュ
527 :
店長 :2008/02/10(日) 17:11:41
す、すいません! 今、ほむぺのリニューアル中なんです。。。 (Rails) を見たといってくれれば半額にしますので よろしくおねがいします!!!
ほむぺ(R) は、(株)SRAの登録商標(登録番号4905533)です。
>>527 「Railsみました〜」って言ったら、「は?なにいってんの?」って言われたよ。ウワァーン
ネタにしては面白くないな。 本当だったらアレだな。
Railsみましたwwww
532 :
デフォルトの名無しさん :2008/02/10(日) 22:00:32
かんたんRuby on Railsの本を読んでいるけど どうしてもcreate_tableができん なんでだろ
エラー見ないと答えようがないが、DB作ってないとか。 (sqliteなら作らなくても○)
534 :
デフォルトの名無しさん :2008/02/11(月) 11:27:44
どうしてsqliteなら作らなくてもOKなの?
ファイルベースだから。 dbfile に設定した名前のファイルがなければ勝手に作ってくれる。
他のはDB作成コマンド発行してユーザー作って権限設定してどーのこーのが必要。 最近はrake db:createとかいうタスクもあった気がする。
537 :
デフォルトの名無しさん :2008/02/11(月) 15:32:39
rakeってなに?
ググれk
json v1.1.2ってWindows環境は対応してないの?
540 :
デフォルトの名無しさん :2008/02/11(月) 22:45:47
railsむずかCーーーーーーーーーーーー
541 :
デフォルトの名無しさん :2008/02/11(月) 22:46:08
民主党・公明党が主導する在日参政権はこんなに危険!! ・在 日 コ リ ア ン は 強 制 連 行 さ れ た 人 で は な い ! ! 出稼ぎ者が99,999999パーセント!! ・指定暴力団員の30パーセントが在日コリアン!! ・パチンコ屋経営の80〜90パーセントが在日コリアン!! ・掛け金なしで年金受給!! ・莫大な数の生活保護受給!! ・在 日 コ リ ア ン は 「 慰 安 婦 2 0 万 性 奴 隷 」 を 捏 造 ・日 韓 併 合 時 の 数 々 の 「 日 帝 の 蛮 行 」 を 捏 造 ・歴 史 教 科 書 に 介 入 し 歴 史 を 捏 造 ・北朝鮮拉致に協力・加担(北と南で国籍は簡単に変えられる) ・韓 国 の 参 政 権 を 持 っ て い る 日 本 人 は 「 5 1 人 」 日 本 に い る 在 日 韓 国 人 は 「 6 0 0 0 0 0 人 」以 上 !!
543 :
デフォルトの名無しさん :2008/02/12(火) 21:56:14
ほのぼのrake。
545 :
デフォルトの名無しさん :2008/02/13(水) 14:47:11
複数テーブルをいっせいに同じページに表示する方法おちえてください
>>545 コントローラー側で各テーブルをfindして
それぞれテーブル毎に@変数に格納して
ビューで展開・表示する事?
548 :
545 :2008/02/14(木) 15:12:16
たとえばコントローラで def index @as = A.find(:all) @bs = B.find(:all) end って入れて、ビューで展開しようとしたら、 uninitialized constant hogehogeController::B って出るんです。なにがいけないのでしょうか。。
>>548 modelにBのファイルが無いというオチじゃなかろうな?
もしくはBがSTIしてるとか
STIってなんですか?
単一テーブル継承
なるへそ。
554 :
545 :2008/02/14(木) 22:36:05
>>549 まさにそういうオチでした。。
ありがとうございます。でなおしてきます。
556 :
545 :2008/02/15(金) 15:58:18
恥をしのんでもう一つ質問させてください 複数テーブルの同画面表示・更新はおかげさまで成功。 こんどはAJAXでリアルタイムに画面上で更新できるようにしたいんですが、 修正対象のテーブルの行だけリフレッシュするところでうまくいきません なにか参考になるサンプルコードとかないでしゅおか? あたまわるくてすみません
tablekit.js
558 :
545 :2008/02/15(金) 17:08:32
見てみました。 でも更新対象はセルじゃなくて「特定のテーブル」なんです。 例えるなら同じ画面に掲示板を5つ出してるようなイメージです
tableにid張っておいてAjax.updateすりゃいいんじゃないの?
行だけは難しいかもしれんね。 色々やってみたことあるけどIEとFirefoxで挙動違ったりで怪しかったんで、 結局セルの中に別途id振ったりしたような覚えがある
561 :
545 :2008/02/16(土) 15:31:02
う、むずかしいんですか… 自分の場合はID振る段階とか、 もっと単純なところで躓いてる気がしますが。。 ちなみにテーブルの数だけ リスト(list)とリスト一行追加(add_list)のview用意して ごっそりrenderするって認識は間違ってませんか?
562 :
545 :2008/02/16(土) 15:40:21
あ、しまった違う add_listなんていらんよね。。
563 :
デフォルトの名無しさん :2008/02/16(土) 15:48:32
轢死 on rails
564 :
560 :2008/02/16(土) 18:09:46
俺のはtrタグやtdタグにid振ってもブラウザによってうまくいったりいかなかったりって話ね
行だけってのはあれなので、 でかいテーブルじゃなければ、 divに入れて、テーブルごと書き換えちゃうのが楽だと思う。
age
sage
568 :
デフォルトの名無しさん :2008/02/22(金) 23:41:51
IISでRails動かしている人っている?
おれおれ
570 :
デフォルトの名無しさん :2008/02/23(土) 14:45:21
ActiveRecordで"ノート"テーブルと"ページ"テーブルがあるとして、 ノート.new("title" => "さんすう")で1レコード増やして、 ノート.page[0].text = "きょうのテーマはたしざん" ノート.page[1].text = "きょうのテーマはひきざん" ノート.page[2].text = "きょうのテーマはかけざん" ノート.save みたいなことやると "ノート"に title = さんすうなレコードが追加されてて "ページ"に title = さんすう, page = 0, text = きょうのテーマは…みたいなレコードが3件できてるー みたいなことってできる? has_manyとかhas_oneとか指定すればいいのか?
できるよ。 has_manyとかhas_oneとか指定すれば
ノート.pages.build(:text => "ほげ") か ノート.pages.create(:text => "ほげ")
3rd Rail糞使いにくい 絶対買わないほうがいい
軽くて使いやすいIDEはないものでしょうかねぇ。
Nebeans 6はIDEの中では割と軽いし使いやすいと思うけど。 特にruby/railsプラグインだけのやつなら起動の時間が短めで良い感じ。 逆に全入りとかのをダウンロードすると、起動にすごく時間がかかるんで注意。
eclipseのプラグインはありますか?
検索もしない奴は死ねばいいと思うよ。
Railsやるならvimかemacsかtextmateしかないだろ常識的に考えて
Windows環境でおながいします
RailsやるならWindowsだけはないわ
どうしても本番機はLinuxとかになるからね。 Windows+Aptanaとかで最初開発してたけど、 途中からもう無理ってことで (サーバの分散とかやることになって、同じ環境がWindowsで作れなくなった) Linux(or Mac) + vi, emacs に全員移行した。
>>584 VMwareServerとかVirtualPCとかじゃダメだったん?
ま、メモリ2GBくらいないとキツそうだが……。
>>585 支給されてるマシンがThinkPad X60なんで、
各マシンでVMwareは重くてストレスたまる。
Linuxサーバ(をさらにVMwareで仮想化)にPuttyとかで繋ぎに行く事になった。
Macの場合はそのまま自分のマシンで開発。
coLinuxはかなーり軽いと思うが。
Linuxマシン用意できるんなら、Windowsで無理しながら使う意味はないな。
589 :
デフォルトの名無しさん :2008/02/26(火) 02:46:34
Rails板ってここだけ?
うん
Webprog板は追い出された。あそこはurlからしてPHPだしね
RailsPlaygroundで環境構築できた人いる? かれこれ24時間はハマッてるんだが・・ FastCGIが有効じゃないっぽいんだよね 中身がそのまま表示されちゃう
国内でRails環境作るとしたら専用のみ? 生CGIは避ける前提なら
>>594 RailsってDB周りのAPIが共有サーバを前提として無いからね。
アプリごとにDBを作れることが前提になってたり。
クイックハックで1つのDBにプリフィックス付けて使うようにできれば共有サーバでもそんなに
不便しないのだけど。
そのへんの制限つきでいいなら、ロリポやさくらでもいけるけど、現実には実行環境のレスポンスがクソ悪い。
ApacheでCGIとして動いてるからね。FastCGI以上の高速実行環境がないと辛い。
まあ、いっそ自宅鯖でも考えたほうがいいかもね。
>> 594 国内のVPSもありますよ。 でもRailsアプリをホスティングするなら、絶対海外が良いと思うけど。 値段が違いすぎるよ。 >> 595 >アプリごとにDBを作れることが前提になってたり。 Schemaを変えれば良いだけでは? もしくはsqliteでやるとか。
ActiveRecord::Base.table_name_prefix
お前らが使っているRails用の安価なVPS教えてください。海外OK Railsくらいになると、専用サバか自宅鯖が多いんかな
599 :
594 :2008/02/27(水) 21:41:31
RailsがサクッとXreaで動いてくれれば嬉しいんだけどな
海外鯖は確かに安いけど情報少なすぎて困る
webアプリの知識はあってもサーバーの知識が無いわけよ・・
だからVPSは周りに迷惑かけそうで躊躇してる
ちなみに
>>592 も俺
RailsPlaygroundはRailsが動く海外共用低価格サーバーとしては有名っぽい
結局まだ動かせてないけど
今ならdreamhostじゃない? Xreaは過去に動かしてけど負荷が高すぎるんで止めたくさい。
×情報が少なすぎる ○英語を読もうとしない
>>597 そんなのいつの間に付いたんだ。
まあどのみちそこらの共有サーバじゃ絶望的に遅いですよ、と。
>>600 dreamhostは重過ぎるらしい
静的HTMLに留めておくのが無難みたいな記事をよく見る
fastCGIがイマイチ動かないらしい
>>601 読もうとしないんじゃない読めないんだ
最近は読む努力をしている
Railを動かす選択肢をあげてみる
・専用サーバ
・国内VPS
・海外VPS
・海外共用(FastCGI有)
まあFastCGIがなかろうとMongrelが常駐できさえすれば劇的に変わるんだけどね mod_rubyがあろうとなかろうと素のApacheは論外
>>605 気持ちはわかるけど、そんなに話題も無いし別にいいんじゃないかな
Railsの場合PHP等に比べて安価な環境構築が難しいし
サーバーの話は定期的に出ると思うんだ
情報が分散したり同じ事繰り返すのもアレだしここでやんなくても良いと思うけど
複数のRailsアプリでセッション情報を共有するにはどうすればいいでしょうか? アプリは同じサーバーにある前提です
セッション保存する場所を共有すりゃいいんじゃね?
sessionをDBにいれて establish_connection指定でそのDBを見に行けばOK。
>>611 config/environments.rbの
# config.action_controller.session_store = :active_record_store
のあたり。テーブルの作り方も上にコメントで書いてある。
>>612 ごめん書き方が悪かった
sessionをDBに格納するのはできたんだ
でも610が書いてくれてるestablish_connectionをactive_record_storeに対応させるやり方が難しくて
自作のモデルになら適用できたのだけど・・
使われるSessionクラスはCGI::Session::ActiveRecordStore::Sessionで、 CGI::Session::ActiveRecordStore::Session < ActiveRecord::Base だったりするので CGI::Session::ActiveRecordStore::Session.establish_connection(...) でいけるんじゃない?
>>614 CGI::Session::ActiveRecordStore::Session.establish_connection(...)を
ApplicationControllerに書いてみたら見事に外部DBにsession情報を置けた
しかしなぜかcookieのsession_idが毎回書き換わってしまう
解決したら方法書きます
アドバイスありがとう!
直前にMySQLへauto_incrementで挿入されたレコードのidを取得するにはどうすればいいんだろうか RailsAPIにlast_insert_idってのがあるけどMySQLでは使えないらしい それならばと直SQLを発行したけどNULLで返ってくる これって途中でセッションが一度切れてるのかな?
ごめん直SQLでいけた SQL発行せずにスマートにできる方法がMySQLにもあればいいんだが
>>616 試してないけど、after_createやafter_saveでできそうな気もする。
619 :
デフォルトの名無しさん :2008/03/03(月) 12:40:15
?
Rails2.0.2のbutton_toってバグってねー? link_toだと思ったとおりになるんだがbutton_to だと動きがおかしくなる。 indexに戻ろうとしてもshowにいったりとかアクション違ったりとか。 何言ってるかわからんかもしらんが何かおかしい。
出力されたhtmlを確認すればよいんじゃないかな、ボケ
formが入れ子になってたって落ちだろ
tbl_a id name hoge tbl_b name fuge select tbl_a.name, tbl_a.hoge tbl_b.fuge from tbl_a inner join on tbl_b tbl_a.name = tbl_b.name これをARでやるとどうやるの? class TblA < ActiveRecord::Base has_many :b end class TblB < ActiveRecord::Base belongs_to a end ret = TblA.find このあとどうすればいいの?お前ら日本で一番RR解ってる 博識ばかりらしいからささっと教えてくれよ
そのtableのつくりじゃAR使えないよ。
class TblA < ActiveRecord::Base has_many :bs, :class_name => "TblB", :foreign_key => "name" end class TblB < ActiveRecord::Base belongs_to :a, :class_name => "TblA", :foreign_key => "name" end ret = TblA.find ret.bs.each do |b| puts b.fuge end
>>626 それで取れたのですが
次に
select tbl_a.name, tbl_a.hoge tbl_b.fuge from tbl_a inner join on tbl_b
tbl_a.name = tbl_b.name
where tbl_a.hoge = "xxx" and tbl_b.fuge = "yyy"
というwhere句がついた場合
現状のARだと、
ret = TblA.find(:condition[...]
ret.bs.each do |b|
puts b.fuge
end
取得結果は、一番最初に検索されたレコードになるんですけど
仕様ですかね?
ちっとは調べろカス
>>629 自己解決しました
rake rails:freeze:edge TAG=rel_1-*-* でいけた
はまってるんで誰か教えてくださいorz
vendor/railsの中に1.2.6環境を入れて使いたくて
>>630 の事をやった
そうすると、
/home/〜省略〜/script/../config/../vendor/rails/railties/lib/initializer.rb:1:in
`require': no such file to load -- logger (LoadError)
見たいなエラーが至るところで見られるようになった
pathが通ってないみたいだけど、どこで通せばいいんだろう?
environment.rb内でもなさそうだし・・
ちなみにvendor/railsを使わないほうが動きが明らかに速いっぽいですね
mongrel でアクセス拒否ってどう設定すればよいでしょうか? ユーザエージェントが libwww-perl のものをはじきたいのですが. よろしくお願いします.
633 :
デフォルトの名無しさん :2008/03/09(日) 17:43:43
rhtmlにコメントを書き込みたいんだが、 実際には出力しないコメントを書くにはどういう記述をすればいいのでしょうか?
質問です
/home/username/prog/hoge といrailsアプリケーションを作りました。
/home/username/prog/hoge で ruby script/server -e production でWEBrickを起動すると
http://example.net:3000/ でちゃんと動作しています。
これを、apacheでfastcgiを使って
http://example.net/~username/hoge で動かしたいと思い、
ln -s /home/username/prog/hoge/public /home/username/public_html/hoge
とやって、.htaccessに
SetEnv RAILS_ENV production
RewriteBase /~username/hoge
RewriteRule ... dispatch.fcgi [QSA, L]
を設定しました。
この状態で上記のuriにアクセスしても
Application error
Rails application failed to start properly
となるんですが、どこをチェックすれば良いんですかね?
OSはFreeBSD
www/fcgi www/mod_fastcgi www/ruby-fcgi はportsからインストールしました
>>632 mongrelにはそういう柔軟な設定はなかったような。
表にApacheとかの設定可能なWebサーバをProxyに立ててmongrelにとばすか、
アプリ側のbefore_filterでUAを見ることになると思う。
>>633 <%# ... %> で間に合う?
>>634 RAILS_ROOT/log/ にapacheさんやnobodyさんがログを書けなかったとか。
>>635 書けるようになってます
1度だけ(なぜ1度だけなのか分からないけど) fastcgi.crash.log も書かれています
ちなみに、.cgiでやってみたところ、/var/log/http-error.logの方に、
config/environment.rb で require 'lib/zzz' してるzzz.rbが見つからないと出ていたので、
require '/home/username/prog/hoge/lib/zzz' に変えてみたところ、そのエラーは出ませんでした。
なんかこの辺の lib/zzz が見つからないというのも怪しい気がします。
.htaccess に SetEnv RAILS_ROOT /home/username/prog/hoge と設定してみても同じです
637 :
633 :2008/03/09(日) 20:01:33
>>635 ありがとう!
特にそういう記述はないんですね。
Railsおもしれ〜便利機能が多々あってワクワクするお
>>636 config/environment.rbの
require File.join(File.dirname(__FILE__), 'boot')
が評価される前は $: に lib は入っていないのだが、見つからないという
ライブラリはどのタイミングでロードしてる?
>>639 一番最後
Rails::Initializer.run do |config|
end
のあとです
railsで作るの初めてなのでどうデバッグして良いかわかりません
ここでinclude_pathにlibが含まれているか確認するにはどうすればいいのでしょう
phpならvar_dumpでもなんでも適当にやれば適当な結果が得られるんですが
あー %irb irb(main):001:0> require 'fcgi' Fatal error 'Thread is not system scope. ' at line 319 in file /usr/src/lib/libpthread/thread/thr_sig.c (errno = 2) Segmentation fault (core dumped) ruby-fcgiがだめっぽいです いろいろ試してまた質問します
642 :
634 :2008/03/10(月) 20:48:05
fcgiの問題が解決しました。 どうもFreeBSDにデフォルトで入っているrubyはpthreadが使われていてこれがダメらしく、 portsからrubyを入れ直すことでfcgiのコアダンプはなくなりました。 requireの問題は解決していないのですが、full pathで書くことで一応起動はするようになりました。
migrationで初期データを登録すると、developmentだとちゃんと登録できてるのに rake specだとデータが入らないんだけど、何でだろう? 空のfixturesで上書き&消去されてるのかと思って調べたけど違うっぽい・・・ なぜ?
migrationスクリプトが走るんじゃなくて、db:schema:loadあたりで データベース構造だけtest環境に複製されるんだと思う。
645 :
デフォルトの名無しさん :2008/03/10(月) 22:45:40
環境は何よ? Webrickなら簡単だけど require 'webrick' server = WEBrick::HTTPServer.new({ :Port => 3000, :BindAddress => '127.0.0.1', :DocumentRoot => '公開したいディレクトリ'}) trap('INT') { server.shutdown } server.start
>644 てことは、やっぱりfixtureが必要ってことかな? そうするとdevelopmentにdb:fixtuers:loadしたときに衝突しそう
648 :
デフォルトの名無しさん :2008/03/10(月) 23:34:39
自身の都合でRubyの国際化にあんまり興味なさげな鬼車の作者を巻き込んでおいて それをサポートするどころか鬼車作者の気遣いを無下にする最新バージョン無断組み込みとか 見当違いの鬼車作者批判とか(Unicode結合文字を1文字として扱わないのは悲しい呼ばわり) 作者の立場だったら俺だって絶対キレるよこれ、なにこのまつもとの態度・・・
ここで言うな。 清美たん、いいかげんWin32スタティックライブラリで関数インポートテーブル作らないようにしてください。
>>634 なんでlibとか入ってるんだろうか
俺もpathについてはよくわからんが
もしrails/vendor配下にRails入れて運用してるなら
/vendor/rails/railties/lib/initializer.rb
にlibへのpathを書いたらどうですか?
あるいはSSHでecho $PATHを見てみる
で、libへのpathが通ってなかったらbash_profileに書いてみるとか
俺もよくわかってないんで適当だけど一応
>>650 PATHはシェル上でコマンド検索が行われるディレクトリ。
rubyのライブラリが検索されるのはRUBYLIB。
>>650 なるほど
ちなみに共用サーバーでライブラリが入っているディレクトリを調べる方法はあるでしょうか?
自分631なんですが未だに解決しなくて右往左往してまして
/usr/bin/ruby/1.8/
/usr/local/lib/site_ruby/1.8/
適当にこの辺に通してみたのですが違うようです
654 :
デフォルトの名無しさん :2008/03/11(火) 20:55:27
html表示する文字の色を変えるにはどうしたらいいですか?
はいはいググレカス。スレ違いも甚だしい。 ところで、もっとRails自体についてちゃんと語るスレって他にないのかな? 本気でRailsの未来に不安を感じてきた。
ここでいいよ。
>>655 じゃぁ言いだしっぺのお前がネタ投下頼む
ここで質問すりゃいいだろ
661 :
デフォルトの名無しさん :2008/03/12(水) 20:40:41
>>658 競合するものが出てくるのはいいことだけど、WavesもRamazeとかも
まだ、その域に達してないように思う。
今はRails一強だから逆にヤバいよ
Java界隈みたいに乱立するのも嫌だ
RailsがRuby人口増やしてる。Railsを使うためにRuby勉強したりとか。 Railsは競争という面では言語を越えてるので、Rubyに限って競争しなくてもいい。
俺の古い知識では、JavaはSpringとStrutsの2強かと思ってたが、違う? 乱立っていうほどでもないと思う。 乱立なら、PHPの方がよっぽどだろ。どれも不完全。だから乱立。 ただRuby(Rails)みたいに唯一なのは健全じゃないと思うな。 対抗馬が一つはないと、腐っていきそうな気もする。 そうなっていたら、mongrelの中の人もブチ切れる事もなかったんでは・・・と思う。
>>665 ちょっとまて、SpringとStrutsは別物だぞ。(Spring MVCとなら対抗だが)
あと、mongrelの人のあれは釣りだったと記憶してるのだが。
まあ、一部の業務では人気があるにしてもエンドユーザーへの影響力は大してないだろうな現状。 tDiaryは日記用スタイルシートのデファクトスタンダードに近いレベルまで普及した。 いまRubyが使えない有料レン鯖ってほとんどない。 その点RailsはあくまでWebプログラマ向けツールだしあまりにハードルが高すぎる。 エンドユーザーにも鯖缶にも。 なによりRailsを使ったキラーアプリがまだ出てこないでしょ。 とか、ただただしの中の人が言ってた。
キラーアプリって現状だと例えばどんなの?
RailsがなかったらPythonの勉強してたと思う。
tDiaryはブログのはしりだし、スタイルシートが汎用性があっていろいろ移植されてるでしょ。 RubricksやRadiantはXOOPSやNucleusに比べてもインパクトに欠けるんだよな 特にRailsを使わない人間にとっては。 それこそエンドユーザーはMSNやGoogleの無料サービスで満足しちゃうしな。
quickml……は最近ぱっとせんな。 するとHikiくらいか? pukiwikiやmediawikiには圧倒的に負けるが。 あとはかなり地味かもだがbogofilterなんてのも国産ベイジアンフィルタとして 重宝してた。でも、いまや大抵のメーラに内蔵されてしまってるしなー。
いやそれはbsfilterだろう
あ、そうだ。間違えました。
キラーアプリか 例えばMovableType、WordPress、Xoops辺りのレベルのアプリは当分出てこないだろうな ロリポ・Xreaで普通に動かない段階ではキラーには成り得ないと思う
Railsがデファクトなんだけど、他に選択肢があるって状況がベストな気がする 他のFWに影響されてRailsコミュも切磋琢磨していくみたいな PHPの場合はZend、Cake、Symfonyの3強に加えてEthnaとか国産系もあるし、コミュニティのリソースが分断されすぎてる どれ使えばいいか困るしね 絶対的な1強 + 2番手 + ダークホースぐらいのバランスが俺は望ましい
railsは本番実行環境でこれっていう決め手がまだ固まってなくて、 安いレン鯖では導入されてないから、そういうとこで個人の趣味 の範囲だとPHPが多くなってしまうよね。
ある程度サーバ代出ないと業務でも使えないしね。 でも、PHPならmod入ってるサーバが殆どだし、安くで済む。
PHP界隈からこっちに来て、Rubyの書きやすさやRailsの使いやすさを認めてる人はたくさんいそう でも気軽に動かせないから結局PHPに戻ってしまうみたいな
bash on rails
Rails勉強中につきちょっと教えてください 今Apache+FastCGIで動かしてるんですが、わりかしキビキビ動いてくれています ただ「最初のアクセス時」がとても遅いです 調べてみるとApache+FastCGIではそれが仕様らしいのですが、 Mongrelだとどうでしょうか? もし起動時のパフォーマンスがいいようであれば乗り換えたいと考えています
試してみりゃいいんじゃね?簡単に試せるでしょ
どっちも個々のクラスは最初に必要になったタイミングでロードされるから 大して変わらない。
遅いのが最初だけなら、起動してすぐに一回アクセスするようにしとけば?
apacheの起動スクリプトにwgetでも書いとくしか
皆さんありがとう、ちょっと勘違いしてた 遅いのは「個々のユーザーの最初のアクセス」じゃないんだね FastCGIのプロセスが続いてる間は速いんだ その辺よくわからんが道が開けた気がする thx
688 :
デフォルトの名無しさん :2008/03/16(日) 14:03:08
まだ勉強中でわからないんですが、皆さんがFastCGIやmongrel_crusterを 使っている理由は、Rubyがスレッドセーフじゃないというところから来てるんですよね? つまり、Rubyはやっぱり1プロセス=1スレッドということなんですか?
RubyにもスレッドはあるがシングルタスクOSでも使えるように疑似的なものだ。 Rubyの単一インスタンスの中で自前で時分割して実行してるだけ。
>>688 スレッドセーフとはスレッドがあるという意味ではないぞ。
>>688 最初の問いはNo. 次の問いはYes.
FastCGIとかを使ってる理由はVMインスタンスの起動が遅いからだろ。
fastcgiやmongrel_clusterで「複数プロセス上げておく」理由を聞いているんだろう。
窓口多い方がレスポンス良くなるからだろ?
>>693 そういうとき、Javaサーブレット経験者あたりだと、窓口1つでも、
スレッドプール用意しておいて、リクエストがあったら空いてるス
レッドでリクエストを処理すればいい、と考えるので、それに比べ
て複数上げるってコトは
・Rubyはスレッドを持たないのか?
・あるなら、スレッドセーフではないのか?
などという疑問を生じるのだろう。
rails のいくつかの部品が thread safe じゃないからだろ。 他の framework なら普通に thread 使えるものはある。
スレッドセーフか否かって、言語じゃなくてフレームワークの作りだよな。 Javaだっていくらでもスレッドセーフでない作り方は出来る。
Win32 threadやpthreadに相当するモノを叩く機能は確かにないよね。
698 :
688 :2008/03/16(日) 18:45:19
みなさんいろいろありがとうございます。
>>691 Rubyは1プロセス=1スレッドなんですね。ありがとうございます。
>>692 >>694 まさにそうなんですよ。当方WebアプリはJavaサーブレットしか開発経験がなくて。
Tomcatって1プロセスじゃないですか?でもそれで並行処理できてますよね?
(ただし、HttpServletRequestをサーブレットのインスタンス変数に設定すると、スレッドセーブじゃなくなることは知ってます)
でもなんでRailsは複数プロセスをあげなきゃいけないのかなと。。
JRuby On Railsでもサーブレットエンジン複数プロセス起動しないといけないんですかね?
その辺の違いがわからなくて。。。
699 :
688 :2008/03/16(日) 18:46:52
スレッドセーブ→スレッドセーフすみません。
そのへんはスレッドをどう実装するかという実装詳細の話になるから MRI(MatzのRuby実装)とJRubyでは違ってくるだろう。 もともとMRIは「DOSでも動く」移植性のために自力でスレッドを実装し ている(というかpthread自体昔はどこでも使えるわけじゃなかった?)だけ なので、プラットフォーム固有のスレッド実装を使ってはいけないという ことはない。
JRubyはJavaのスレッドを使うんじゃなかったっけ?
JRuby試せる格安鯖教えてよ。 Googleがそういうの始めないかな。
レン鯖でもかりれば?
自宅サーバ+DDNSだな
さくらがPHP5の提供開始したね。
てっきり俺はプロトタイプ用のフレームワークかと・・・
3rdRailは無料版出せばいいのに。 NetBean便利すぎ。重いけど。
708 :
デフォルトの名無しさん :2008/03/17(月) 22:52:54
RoRで作った有償ソフトってあんのかね? あるならコードって丸見え?
そりゃ丸見えだろ
ふつうスクリプトは直接見えないだろ。
ASPじゃなくてサーバにインスコ出来る形で提供される場合のことをいってるんだろ。
Movable Typeとかは有料、インストール型で、ソース見えるんじゃないかな。
GPLv3って、Web経由で利用してるエンドユーザーも実際使ってる 環境のソース見えるようにしないといけないらしいな。 どんだけ基地外だよ。
Linuxがv3になったら、googleなんかもOS改造部分を公開しないと いかんということだが、この場合たいしたことないかな rubyがv3になったら、twitterや食べログのコードも公開するってこと?
>>713-734 なんか色々誤解しているようだが、少なくともGPLv3にそんな条項はない。
多分AGPLv3のことを言いたいんだろうけど、それにしたってWebサーバー上で
サービスを提供するGPLプログラムが対象であり、そのプログラムが解釈実行
するスクリプト言語で書かれたプログラムは対象ではない。
>>715 rubyのクラスライブラリがv3になったら、
それを使うスクリプトはv3にしないといけないんでないの?
そもそも、RubyについてるライブラリにはGPLでないものが多数あるし、 Ruby自体GPLとRuby'sのデュアルだなぁ。 ちなみにRailsはMIT
tar玉の中みてみたが、Rubyで書かれたライブラリはほとんど 「Rubyと同じ」と書いてあったので、=Ruby'sとGPLのデュアル ってことだな。
>>716 そんなの初耳。
/bin/sh と /bin/[ がGPLだったら、シェルスクリプト全てGPLにしなくちゃいけない、
とか言うわけ?
となると rubyがv3になって、 twitterや食べログもv3のrubyを使うようになったら、 ソースが拝めるということですかな wktk なるか知らんけど
フォームで入力されたキーワードを
WHERE name LIKE '%クォートした入力値%'
みたいなWHERE節で部分一致検索するのはありがちだと思うんだけど、
AR::Base.find(:all, :conditions => [ 'name = ?', arg ])みたいな
プレースホルダを使った:conditionsにうまく記述できなくて困った。
プレースホルダは 'name = "%?%"' という形では使えないみたいだし、
Trac見ると直接条件式内に展開する方法で回避しているもよう。
http://dev.rubyonrails.org/ticket/6772 無理なのかなー。
>>721 ならない。せめてライセンスの解説記事でも読んどけ。
724 :
デフォルトの名無しさん :2008/03/20(木) 23:28:23
ここに書き込むべきかどうか悩んだが、帳票関係(PDF等)ってどうなんでしょうか。。
何が聞きたいのか分からない。 何をしようとしていて、帳票関係にたどり着いたのか説明して。
>>724 PDFを出力できるのか、という意味なのかな?
>>726 それだけだと、PDFのプリミティブを出力できるレベルから、他の文書をPDF変換できるレベルまでいろいろありそうだな。
というわけで、詳しく
>>724
ネタ枯れのこの時代、新たな息吹を吹き込んでくれるだろう、>724に皆期待しているのだよ。
724が再登場するまで別の話題でつながせてもらっていいでしょうか Rails構築手段で最も強いのはApaceh+Mongrel+Mongrel_clusterかな? lightyは何だか落ち目っぽいし とりあえず1年くらいはMongrelでいけばいいんだろうか 開発がストップしたらしいのでこの先ちょっと不安はあるが
Mongrel安定してる? 自分はもう使わなくなってしまったけど。
mongrel_rails cluster::restartがうまくいった試しがないんだよな。
何らかの不具合で前のpidが残ってるから手動で消さないといけない、みたいな解決法を見かけた気がする
>>730 たまに落ちるけど、まあ満足してるかな
参考までに今はどんな組み合わせかが熱いのか教えて欲しいです!
PDFはRfpdf使った。 マニュアルとかはFPDFのを参考にすればOK。 他のは日本語パッチを配ってたサイトが無くなってたり、RubyバインディングはあってもドキュメントがC言語のしかなかったりしてちょっと大変。
736 :
724 :2008/03/23(日) 12:56:53
724です。レスつけてくれた人ありがとう。 具体的にはエンタープライズ用途だと帳票出力が必須なので何かよいものがあればと思って。 やりたいことは画面から条件してして、DBからとってきてPDFへ出力。よくあるパターンですが。。 クライアントには特別なプラグインを入れないでいくとなると(ポリシー,互換性云々で)、HTMLかPDFが妥当な線だと思ってPDFを考えてます。 日本語が使えること、帳票レイアウトツール(コーディングでカバーしてもよいけどメンテナンスが大変だからなるべくパス)、があれば文句なしです。 Ruby FPDFはまだ、本格的に試していないけどなかなかいい予感。 RubyからのJasperReportsもなかなか良さそうですが、とりあえずRuby FPDFから攻めてみたいと思います。
>>736 735だけど、一応補足。
PDFのライブラリはいくつかあるけど、
日本語が使えるものとなるとあんまり選択肢がなくなる。
フリーにこだわらなければ、PDFlibとかもあり。
Rfpdfを選んだのは、
- フリーである
- 日本語が使える
- Railsプラグインになっている
- RedMineのPDF出力でも使われていた
- (FPDFのだけど)日本語マニュアルがある
という理由。
あとそんなに凝った事をしなかったのもあるかも。
Rfpdfもちょっと問題があって、
特定の日本語文字列の末尾の文字が出力されない事がある。
これはかなりローテクだけど、
出力する文字列の末尾に半角スペース1個を入れる事で回避できた。
Rfpdfにはレイアウトツールはないので、コーディングすることになるけど
その辺を重視するならJasperReportsとかの方が良いかも。
すいません、質問させてください。 Rakefileにmongrel起動用のコマンドを書きました。 sh "mongrel_rails start -e production" OS XとCentOSでは問題無いのに、Win XPではエラー rake aborted! undefined method `exitstatus' for nil:NilClass Winでもほかのrake(sh)タスクは大丈夫なのにmongrelは駄目。 (普通にコマンドプロンプトから起動することはできます) なんで?
mongrelはイントールされている?
今度、会社で受けた案件をRailsでやることが決まりました。 今日の社内ミーティングはこんな感じでした。 先輩「WEBアプリだけど、またPHPでやるのはどうよ?」 俺「もうLAMPじゃ面白くないっしょ?StrutsやSpringとかフレームワークやりたいからJavaにしねー?」 後輩「あのFWならRailsってどうですかね?やっぱりないですよね?」 先輩「ないないw」 俺「ちょっwないでしょーーーっっw」 後輩「やっぱりw」 俺「でもRubyも、ありじゃね? 先輩「ありかもな・・・」 三人「ありあり」 すごく不安です。。。
あはは・・・やめとけ
絶望した
なんという集団心理
>>740 具体的な話は一切でてこないところが素敵
仕事でrailsって使ってる人いるんだ・・・1.9があれなのに選択肢になるんだ・・・
1.9は流石に仕事では使わんよ
ARのconditionsの定義で 日付の範囲指定形式って 2008-03-24 00:11:00 でおけ? Data.find(:all, :conditions "date > date_str") これやりたいだけなんだけどさ
愚直にplaceholder使っとけばいいんでねえの
:conditions => [ 'date = ?', date ] とプレースホルダを使おう。
どういうわけか748が目に入ってなかった俺orz
既存のアプリのデータベースをRailsで扱っています。 テーブルのフィールドに VARCHAR "class" というのがあって、 RailsでARインスタンスとして読み込んだときに、Rubyクラスオブジェクトとして 無理やり扱おうとして変になっているみたいなのですが、"class" の挙動を無効に するオプション設定のようなものはありますか?
753 :
751 :2008/03/25(火) 19:21:04
ActiveRecordのカラム名のマジックかと思ったら、 class Foo << ActiveRecord::Base end a = Foo.new a = Foo.find(:first) この a.class の戻りがややこしくなるためのようなので、 あきらめて直接SQLを叩いて対応することにしました。
ActiveRecordをThread.newした中で使うとなんかうまく動かないよママン… findとかでレコード検索さそーとするとそのまま処理が帰ってこない ActiveRecord::Base.allow_concurrency = true はやってみたけどダメ Thread.new{ ActiveRecord頑張れ超頑張れ }.join(10) とかやると10秒間はちゃんと動いてくれる どうにも解決できないので誰かちょっと教えてくれんか…
755 :
デフォルトの名無しさん :2008/03/26(水) 10:44:30
本場のメイドさん?
超低級な質問で申し訳ないですが、 ActiveRecord::Baseの、::Baseって文法上どういう意味なんですか? 自分が勉強した限りでは、::という記号はクラスフィールドか定数を表すはずだったんですが。
ActiveRecordというのはモジュール。 ARのモデルは、そのモジュールの中にあるBaseというクラスを継承したクラス。 Baseもそうだが、実はStringやArrayなんかも 「値がClassクラスのインスタンスである」定数 だよ。
761 :
759 :2008/03/30(日) 02:04:22
>>760 分かりやすい説明ありがとうございます。
Classという型があってオブジェクトはその型の定数になってるんですね。
759の質問に答えるだけなら、BaseはActiveModuleの定数だな。 Stringみたいなクラス名が、所詮Classクラスのインスタンスを値として 持つ定数に過ぎないってのはなかなか理解しづらい人もいるかも。 >> ActiveRecord.class => Module #ActiveRecordというオブジェクトはModuleクラスのインスタンス >> ActiveRecord::Base.class => Class #ActiveRecord::BaseというオブジェクトはClassクラスのインスタンス >> class Hoge < ActiveRecord::Base; end => nil >> Hoge.class => Class #HogeというオブジェクトはClassオブジェクトのインスタンス >> Hoge.superclass => ActiveRecord::Base #HogeクラスのスーパークラスはActiveRecord::Base
間違い 誤 ActiveModule 正 ActiveRecordというModule ○刀乙
____ __,,/ _, ----`ヽ :. :. / _ ___ 、\ / / i \ \\ :. :. ,'./ i ヽ:. ヽ:.:.. ヽ.ヽ ,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :. :. |i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ} |i .i l :N_, -弋 \弌弋ナ:}:.:} :. |i∧ ', :{ ,ィjモト \ イjミトイイV :. な… .| :メヽ.', `ozZ} izN。ハ::{ なんなんですか? :. | :ヾ_! ゝ "゙゙ ' `゙ ハ.:', :. ここ、どこですか? | :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ なんであたし :. / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:. 貼られたんですか? / ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\ :. / .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ.:. / / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ', ./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ', { /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.} V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧| ヽ! )人 : : :人 : : : / \! :. " ヽ : : : : :/イ{ :.ノ: : : :.\ :. :. \__///: :\______/: : : : : : : ヽ / //: : :|;|: : : : : : i: : : __: : : : ', :. / 、 {;{ |;| . : i/. : : : : : :| / `Y;{. . . .|;|. : : : /i: : : : : : : : :l
RailsのAPIを見てると、メソッドの引数にパラメータとオプションの2種類あるんですが これはRails独特の文法なんですか? それとも複数の引数に対して呼び名を変えてるだけですか? そもそもオプションをいくつ付けても付けなくてもよいというのは、どのようにメソッドを宣言してるのでしょうか
ソース読もうぜこんちくしょー。
普通に最後の引数がHashで 引数の最後にHashが来る場合は{}を省略できるから名前付き引数に見えるだけ
>>767 それだとオプションを省略したらHashの引数を省略することになって
引数の数が違うというエラーが出るように思うのですが。
ソース読もうぜこんちくしょー。
ソース読まんようだから書いてやる def foo(mandatory, arguments, options={}) end
書いても読まれないよ?
先週出たSB本まぁまぁ よかった。昔の良書系 インプレス程度だが
775 :
デフォルトの名無しさん :2008/04/01(火) 18:28:54
Informationテーブルがあったとして、そのカラムを多対多で結び付けたい(親子関係を多対多で付けたい)のですが、どのようにしたらいいでしょうか? テーブルがどんな風になるのかいまいちわからないのです><
776 :
775 :2008/04/01(火) 18:30:23
すみません途中で送信してしまいました>< Informationテーブルがあったとして、そのカラム同士を多対多で結び付けたい(親子関係を多対多で付けたい)のですが、 どのようにしたらいいでしょうか? information_and_informationテーブルがどんな風になるのかいまいちわからないのです><
table_a id name table_b id name table a_and_b a_id b_id って事かいな? has_and_belongs_to_manyを使うといいかもしれんね。
同じテーブルの結合は普通にできると思うし acts_as_tree でやるのがかんたんにできるんじゃ。 使ったことないけど。
ごめん。多対多か。
model部分ではActionRecord::Baseを継承したクラスでvalidateメソッドをオーバーライドしますが、 APIを見てみるとvalidateメソッドはActionRecord::Validationモジュールのメソッドのようです。 どうしてオーバーライド出来るんでしょう?
lib/active_record.rb で、 ActiveRecord::Base.class_eval do ... include ActiveRecord::Validations ... end してるから。
783 :
775 :2008/04/03(木) 15:31:36
testの実行で微妙にうまく動かなくて困っています rake test:units で全体をテストするとERRORになる項目がありますが、 一つのファイルだけ指定して、 ruby test/unit/foobar.rb 等と実行すると、PASSします。 autotestにすると、最初の一回は上と同様ERRORになりますが、ファイルを一度 更新して(全く同じ内容で上書き)もう一度テストが実行されると、同じ テストがPASSします。 モデルのクラス名とDBテーブル名がrails規約に則っていないので、 set_fixture_class で指定しているのですが、 class FoobarTest < Test::Unit::TestCase fixtures :hogera set_fixture_class :hogera => Foobar def setup @foobar = Foobar.find(1) end .... ここが設定されていないようで、Hogeraクラスがないというエラーに なっています。 なんだか、全体をテストで回すときに最初の一回初期化がおかしいような 動作に見えるのですが、何か原因や、対応策などありますでしょうか? 「2.0.2になってからfunctional testがおかしい、 setup_without_fixtures を オーバーライドしてみたらうごく・・・」という情報を見つけましたが、 これに関連しているのか、よくわかりませんでした。
2.0.2のfunctional testは壊れてる
vendor/plugins/hogehoge/app/controllers/foo_controller.rb を変更したい場合、このファイルを直接変更する以外に、 別の場所にコピーし上書きして使うことができるとききました。 もしほんとにそんなことができるなら、どこにコピーしたら いいのか教えてください。
RoRって凄いな… Javaの10倍早いとかなんとかの噂に釣られて少し勉強してみたけど マジで2〜3時間程度で1つのWebサービス作れるようになった
>>787 RoRの派生系統でもそんな感じ。
たとえばLisp系のGauche/Kahuaもそれぐらいで作れる。
RoRは「10分で作れる・・・」が目標w
だめだ・・・ 俺なんてログインフォームの html.erb 編集だけで 10 分くらいかかっちゃう。
そこから先も長そうだな・・・
そのぶん作りたてでは実行速度が絶対的に遅いです サイトに合わせて設定やパラメータをチューニングしていくとまあまあの動作になります 他の言語では作りたては単一の目的に驀進してて普通に速くて軽快ですが、 ユーザーの利便のためにエラー処理とかオプションとかを作りこんでいくとどんどん遅くなります どっちもどっちっすな
>他の言語では作りたては単一の目的に驀進してて普通に速くて軽快ですが、 >ユーザーの利便のためにエラー処理とかオプションとかを作りこんでいくとどんどん遅くなります でたYO!Ruby厨のネガキャンw 「他の言語はどんどん遅くなってしまえ」の間違いじゃねえの?www
794 :
デフォルトの名無しさん :2008/04/06(日) 17:38:40
Rubyはもっと広がってほしいけど、その前にPHPを抹殺してほしい。
PHPとPerlとVBとCOBOLとJavaは関わりたくないな
PerlとJavaは内容によっては許可
PHPなどの他の言語では遅くなるけどRubyでは遅くならない例ってあるのかな? 具体的なケースがあればRoRを使う理由のひとつとして提案しやすいよ。 RubyとRoRのどの部分が速度に効いてるかその理由も聞かしてよ。 作りこんでいくと遅くなるだと、どの言語を使ってもプログラマーの腕次第って結論になるよ。 設計が良いから遅くならない理由をちゃんと説明できるようになりたい。
\ ∩─ー、 ==== \/ ● 、_ `ヽ ====== / \( ● ● |つ | X_入__ノ ミ そんな餌で俺様が釣られクマ―― 、 (_/ ノ /⌒l /\___ノ゙_/ / ===== 〈 __ノ ==== \ \_ \ \___) \ ====== (´⌒ \ ___ \__ (´⌒;;(´⌒;; \___)___)(´;;⌒ (´⌒;; ズザザザ
PHPonRailsとか無いんですか
COBOL ON COGSなら
802 :
デフォルトの名無しさん :2008/04/06(日) 21:38:21
803 :
デフォルトの名無しさん :2008/04/06(日) 21:39:56
rubyは口だけ
8分で作るまでになんどリハーサルやったんだろうな。 第一8分でできたといってもそれ実用レベルじゃないしな。
805 :
デフォルトの名無しさん :2008/04/06(日) 21:57:58
Ralisでこんなに速く簡単に作れるんか?
n分で作るなんとかシリーズって、みんなタイピング練習してからキャプチャしてるだろ。 ってマジレスでごめん。
>>804 それはRailsにも言えること。
あんなのを素の本気でアピールに使うのは迷惑千万。
Rubyだけが例外と思ってる奴はアホ。 現実的にはRoRもスケーラビリティーに問題があるというのが一般的な見解。 作りこめば遅くなるのも同様。 Catalystが早いのもリーハーサルじゃなくてコード数のおかげ。 RoRは開発スピードが停滞してて他言語に追い越されつつある。
809 :
デフォルトの名無しさん :2008/04/06(日) 22:40:28
デフォルトでperlのほうが2倍以上速くてしかも RubyだとFastCGIしか使えないだろw どう見てもperlにメリットがあると思うw
とは言え、perlで1万行書いたら確実に死ねる。 経験者が言うんだから間違いないw # しかもそのシステム、まだ現役なんだ……。
813 :
デフォルトの名無しさん :2008/04/06(日) 23:05:16
本読むにも文字が少ないほうが速く読めるだろ 1000ページの本と 100ページの本どちらが速く見れるか 慣れれば省略なんて分かるさ。
814 :
デフォルトの名無しさん :2008/04/06(日) 23:06:11
Rubyだとperlで1万行で済むところ3万行も書く羽目になる
815 :
デフォルトの名無しさん :2008/04/06(日) 23:23:10
3万ってたいしたことなくね?
私的には些細な保守性や速度の差よりも、 ドキュメントが充実してるか否かの方が大きいわ。
じゃ、PHPってことで
818 :
デフォルトの名無しさん :2008/04/06(日) 23:52:21
ドキュメントもモジュールもperlが一番多くて出来る事も多い
FastCGIって使うのかなぁ。 Apache+mod_proxy_balancer+mongrel_cluster だと思うけど。 スケーラビリティの無さは確かに困るね。 実際に開発に入る前に、 その辺の基礎的な所を固めるのに結構時間かかったよ。
>>804 ホントはそんなにゲームが上手いわけじゃなくて、イベントのために
「スターソルジャー」のステージ1だけ猛練習してた高橋名人みたいなものか。
ウェブアプリなんて、8分でつくれるんだろ?
自分が書いたプログラムが全部で何行になっているか確認する方法はありますか? RoRだとよくわからなくて・・・
rubyって早くも行き詰ってる感あるからなぁ RoRでちょっと人気でただけで PHPが登場したときの盛り上がりと比較すれば差は歴然だよね pythonではなくruby選ぶ理由なんて現時点では皆無だし
>>814 両方いじった感触だとそれはありえない。
perlやrubyなら100行で済むところが、javaだと300行になるのはよくあるが。
> 822 rake stats
826 :
デフォルトの名無しさん :2008/04/07(月) 09:04:09
pythonのような屑言語と比較するなよ
Rails on Apache と Apache on Rails どっちがいい?
>>819 mongrelって最適なプロセス数をちゃんと考えておかないとイマイチじゃね?
そこら辺皆どうしてるん?
ちゃんとJmeterでしらべてるのかしらん?
830 :
デフォルトの名無しさん :2008/04/07(月) 11:29:21
rails全然スケールすると思うけどなぁ。 ちゃんと作ってれば、WEB系システムのスケールってだいたいDBの速度じゃない? スケーラビリティーに問題ありって人はどういった状況なの?
>>829 おれも興味ある。
mongrelのプロセス数が足りてないのか、あるいは多すぎるってのは、
何を見て判断すればいいんだろ。
とりあえず最初から3個のままだ。
832 :
デフォルトの名無しさん :2008/04/07(月) 13:04:30
描画で時間かかってて、同時アクセス数が多いならプロセス数増やす DBが遅いならRAILS関係なし プロセス数たりなければ、apacheの待ちプロセスが増える。 プロセス多すぎたらリソース食いすて遅くなる等の問題が出る。 メモリはいっぱい積もう。
833 :
デフォルトの名無しさん :2008/04/07(月) 13:58:53
質問させてください。 初心者で、何をいじれば、良くなるのか、わからないので、 ヒントをいただけるとうれしいです。 構成は、 Apache(+mod_proxy_balancer) + mongrel_cluster(Rails) + MySQL です。 スクリプトで、別マシンから平均25アクセス/秒程度の 負荷を掛けてみました。 レスポンスに平均2秒程度掛かってしまっています。 Mongrelは10個立ち上げてます(多すぎですかね?) アプリマシンの状態はこんな感じです。 $ vmstat 5 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 0 3242764 78532 117304 0 0 0 0 10 10 0 0 100 0 0 0 0 3244628 78532 117348 0 0 0 0 1329 1262 61 4 35 0 14 0 0 3243952 78548 117416 0 0 0 25 1579 1548 72 6 22 0 7 0 0 3242316 78556 117500 0 0 0 25 1876 1535 92 8 0 0 9 0 0 3241708 78564 117584 0 0 0 22 1937 1415 93 7 0 0 9 0 0 3240336 78572 117664 0 0 0 22 1839 1281 93 7 0 0 10 0 0 3240960 78580 117740 0 0 0 21 1883 1324 94 6 0 0 9 0 0 3238612 78588 117820 0 0 0 26 1885 1336 93 7 0 0 10 0 0 3240196 78596 117904 0 0 0 22 1887 1325 93 7 0 0 10 0 0 3240456 78604 117988 0 0 0 24 1903 1432 94 6 0 0 9 0 0 3240588 78612 118068 0 0 0 22 1875 1272 93 7 0 0 5 0 0 3240100 78620 118156 0 0 0 22 1935 1704 92 8 0 0
834 :
833 :2008/04/07(月) 14:15:05
すみません。アプリマシンは、こんな感じです。 $ vmstat 5 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- -r--b --swpd---free---buff--cache --si---so ---bi----bo --in---cs us-sy-id-wa -0--0 -----0-3242764--78532-117304 ---0----0 ----0-----0 --10 --10 -0--0-100--0 -0--0 -----0-3244628--78532-117348 ---0----0 ----0-----0 1329-1262 61--4-35--0 14--0 -----0-3243952--78548-117416 ---0----0 ----0----25 1579-1548 72--6-22--0 -7--0 -----0-3242316--78556-117500 ---0----0-----0----25 1876-1535 92--8--0--0 -9--0 -----0-3241708--78564-117584 ---0----0-----0----22 1937-1415 93--7--0--0 -9--0 -----0-3240336--78572-117664 ---0----0-----0----22 1839-1281 93--7--0--0 10--0 -----0-3240960--78580-117740 ---0----0 ----0----21 1883-1324 94--6--0--0 -9--0 -----0-3238612--78588-117820 ---0----0 ----0----26 1885-1336 93--7--0--0 10--0 -----0-3240196--78596-117904 ---0----0 ----0----22 1887-1325 93--7--0--0 10--0 -----0 3240456--78604-117988 ---0----0 ----0----24 1903-1432 94--6--0--0 -9--0 -----0-3240588--78612-118068 ---0----0 ----0----22 1875-1272 93--7--0--0 -5--0 -----0-3240100--78620-118156 ---0----0 ----0----22 1935-1704 92--8--0--0 -0--0 -----0-3241952--78628-118204 ---0----0 ----0----21 -978-1249 41--3-56--0 -0--0 -----0-3241960--78636-118224 ---0----0 ----0----12 -535--904 15--2-83--0 -0--0 -----0-3241952--78644-118232 ---0----0 ----0-----8 -347--900 -6--1-93--0 -2--0 -----0-3241952--78652-118236 ---0----0 ----0-----6 -294--853 -1--0-98--0 -0--0 -----0-3241952--78652-118236 ---0----0 ----0-----3 -269--939 -0--0-100--0 -0--0 -----0-3242016--78660-118236 ---0----0 ----0-----2 -253--820 -0--0-100--0
835 :
デフォルトの名無しさん :2008/04/07(月) 14:37:15
railsログでは1プロセスは1リクエストを何秒で処理できるの? 簡単に言えば1プロセスが1秒に10リクエスト裁けるなら、mongrel5個なら 1秒に50個処理できるよね。 もともと処理に2秒かかるなら、プロセスいくつ増やしたって当然2秒かかる。 プロセス増やして描画の処理能力が落ちちゃってるならプロセス多すぎる。 DBが遅くなってるなら設計がだめかサーバーがぼろすぎる。 設計がダメなアプリは何でどう作ってもダメだからしょうがないよ。
836 :
833 :2008/04/07(月) 14:59:22
>>835 アドバイス有難うございます。
秒間、18リクエストぐらいまでは、
平均、0.2秒で返してくれるんですが、
19〜20リクエストぐらいから、どんどん遅くなるみたいです。
railsログは、log/production.logを見れば良いんですかね?
production.logは、こんな感じです。
Completed in 0.01850 (54 reqs/sec) | Rendering: 0.01424 (76%) | DB: 0.00000 (0%) | 200 OK
Completed in 0.01773 (56 reqs/sec) | Rendering: 0.01332 (75%) | DB: 0.00000 (0%) | 200 OK
Completed in 0.06937 (14 reqs/sec) | Rendering: 0.06201 (89%) | DB: 0.00000 (0%) | 200 OK
Completed in 0.03860 (25 reqs/sec) | Rendering: 0.03171 (82%) | DB: 0.00000 (0%) | 200 OK
Completed in 0.05636 (17 reqs/sec) | Rendering: 0.05005 (88%) | DB: 0.00000 (0%) | 200 OK
Completed in 0.01776 (56 reqs/sec) | Rendering: 0.01385 (78%) | DB: 0.00000 (0%) | 200 OK
Completed in 0.13781 (7 reqs/sec) | Rendering: 0.12299 (89%) | DB: 0.00000 (0%) | 200 OK
個人的には鯖がたくさんあって、書き込みが多いシステムにはmongrel
それ以外ならFastCGIで
htmlに吐いてキャッシュかRailsキャッシュ使うなりして逃げた方がいいと思ってる。
>>833 それだけじゃワカラン。
SWAPは発生して無いみたいだから
DB回りがボトルネックになってると予想
JOINとかしてる?
無駄なクエリ発行してない?
ARに頼ると遅くなるよ
select * from hoge where id = ????? limit 1 ;
みたいな単発SQLでも数が多いと時間かかる時もある
838 :
833 :2008/04/07(月) 15:18:06
>>837 有難うございます。
確かに、クエリは多くなっているように思います。
JOINしてます。
ARに頼らないということは、DBIを使うべしということでしょうか?
よくわかっていないもので、お手数お掛けしてすみません。
>>838 find で
:select で絞るとか、
:join で明示的にJOINするとか・・・
クエリに関わる物全てが動的だったら無理だけど、
マスタデータとか、バッチ更新でしか変わらないようなデータなら
フラグメントキャッシュ使うとかやってみたら?
例えば、TOPのランキング一覧とかなら
その部分はフラグメントキャッシュで持って
1時間毎キャッシュクリアして更新するとか。
クエリ多いなら、
DB側のチューニングもやってなければやった方がいいかもしれんね。
さくらのレンタルサーバーとかだったら、DB周りはチューニングしようがないと思うよー
841 :
833 :2008/04/07(月) 15:38:16
>>839 有難うございます。
:selectは、使ってませんでした。
アドバイス助かります。
キャッシュについても試してみます。
842 :
833 :2008/04/07(月) 15:41:21
>>840 自宅に置いてるので、いじれると思うんですが、
具体的な方法がわかってません。
David Pollak わたしはこれまで Rails による開発を 18 カ月、Java による開発を 10 年経験してきました。 Rails はウェブ開発に新しい風を吹き込みました。よく使うタスクはコマンド一発で実行することができます。 実にすばらしい。しかし、私は気が付いてしまいました。Ruby の動的型付けは多くのエラーを引きおこすことに。 そして、安心してデプロイするためには 95% ものテストカバレッジを達成しなければいけないことに。 95% のテストカバレッジを得ることの代償として、私の書いたコードは(テストコードも含めて) Java で書いたものと同等のサイズにまでふくれあがってしまいました。 その上、Rails では動的なコードの変更が可能なため、開発・テスト・デプロイ中にトラブルが続出するようになりました。 高いテストカバレッジを確保しているにも関わらずです。 これらの問題にくわえて、MRI(Matz Ruby Implementation: まつもとゆきひろ氏による Rubyの実装)は速度が遅く、 言語仕様も安定していません。それなのに開発コミュニティはそのことに見向きもしません。
>>843 ひがの反論の方がしっくりくるよ
95%カバレッジしててトラブル続出ってありえないだろう
845 :
デフォルトの名無しさん :2008/04/07(月) 17:09:37
CPUリソース不足 あとはMYSQLで処理開始待ちが増えてないかどうか見てみな
846 :
833 :2008/04/07(月) 17:31:05
>>845 アドバイス有難うございます。
ということは、Railsのコードに大幅な改善が見込めないなら、
さっさと、アプリサーバを増やした方が早いということでしょうか。
MySQLの状態の見方が良くわかっていないのですが、
負荷テスト中に、show full processlist;してみると、こんな感じでした。
mysql> show full processlist;
+-----+--------+---------------------+----------------+---------+------+-------+-----------------------+
|-Id--|-User---|-Host----------------|-db-------------|-Command-|-Time-|-State-|-Info------------------|
+-----+--------+---------------------+----------------+---------+------+-------+-----------------------+
|-316-|-apphnk-|-192.168.2.100:60163-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|-
|-317-|-apphnk-|-192.168.2.100:60164-|-hnk_production-|-Sleep---|----1-|-------|-NULL------------------|-
|-318-|-apphnk-|-192.168.2.100:60165-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|-
|-319-|-apphnk-|-192.168.2.100:60166-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|-
|-320-|-apphnk-|-192.168.2.100:60167-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|-
|-321-|-apphnk-|-192.168.2.100:60168-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|-
|-322-|-apphnk-|-192.168.2.100:60169-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|-
|-323-|-apphnk-|-192.168.2.100:60170-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|-
|-324-|-apphnk-|-192.168.2.100:60171-|-hnk_production-|-Sleep---|----1-|-------|-NULL------------------|-
|-325-|-apphnk-|-192.168.2.100:60172-|-hnk_production-|-Sleep---|----0-|-------|-NULL------------------|-
|-327-|-root---|-localhost-----------|-NULL-----------|-Query---|----0-|-NULL--|-show-full-processlist-|-
+-----+--------+---------------------+----------------+---------+------+-------+-----------------------+
11 rows in set (0.00 sec)
847 :
デフォルトの名無しさん :2008/04/07(月) 18:12:03
今あるデータだけだとそう考えられるね。とりあえずプロセス減らして、サーバー買うなりCPU強化するなり、ロジックを修正するなり BACKGROUNDRBとか、大量のログとか、ファイルの読み書きとかやってないよね?
848 :
833 :2008/04/07(月) 18:28:08
>>847 アドバイス恐縮です。
BackgrounDRb、log/production.log以外のログ、
ファイルの読み書き、などやっていないと思います。
教えていただいたことをやってみます。
有難うございました。
849 :
デフォルトの名無しさん :2008/04/07(月) 19:21:18
production logだけど、遅くなってる時はproduction.logの処理時間も遅くなってるんだよね? apacheでは処理時間だしてる? apacheで表示される処理時間と、同じリクエストのproduction.logを見てみな。 どっちみちWEBアプリでユーザーのCPUリソースが90%超えるとかありえないから どっかおかしいんじゃないかな。それか 凄く思いロジックを凄いぼろい鯖でやってる?
850 :
833 :2008/04/07(月) 20:38:36
>>849 有難うございます。
Apacheのログに%D(マイクロ秒?)で処理時間を出してみました。
こんな感じで、
1312022
970413
1431397
1205620
1165282
1027745
1138476
1326502
980994
大体1秒から2秒ぐらいかかってます。ただ、6335389ぐらいかかってる
リクエストが混じってるので、平均して2秒以上掛かってます。
(遅かったリクエストの処理が他に比べ重いとかそういうことはないです。)
すみません。先ほど、production.logのデータを取るところを間違ったみたいで
一番負荷が掛かってる頃では、大体0.2〜0.35秒ぐらいかかってました。
30秒間で、1秒程度掛かってるのも3回ほどありました。
851 :
833 :2008/04/07(月) 20:50:09
>>849 ロジックが酷いのかもしれないです。
CPUは、Core2Duoです。
:includeとかで、もう少し速くなりそうではあるのですが、
根本的に、やり方が酷いのかもしれません。。
あと、秒間18リクエストぐらいに落とすと、
ユーザーのCPUリソースがだいたい60%ぐらいで、
平均0.2秒ぐらいでレスポンスが返ってきます。
852 :
デフォルトの名無しさん :2008/04/07(月) 21:43:54
TEXT入力ボックスの幅を調整するにはどうすればよいですか? <p> <b>Text</b><br /> <%= f.text_area :text %> </p>
853 :
833 :2008/04/07(月) 21:51:17
>>852 こんな感じ?
<%= f.text_area :text, {:cols => 50, :rows=> 5 }%>
854 :
デフォルトの名無しさん :2008/04/07(月) 22:03:43
>>853 ありがとうございます。
うまく行きました。3日前からはじめたばっかりなもんで ^^;
855 :
833 :2008/04/07(月) 22:37:19
>>851 Railsのログ見てどこがネックになってるかわからんのん?
DBアクセスで何秒、レンダリングで何秒か位は出てた気がする。
見当違いだったらスマンね。
857 :
833 :2008/04/07(月) 23:53:33
>>856 有難うございます。
DBは問題ないみたいです。
レンダリングに結構時間が掛かってるみたいなので、
何か無駄なことをしちゃってる気がします。
何か絞り込めた気がします。ありがとうございました!
858 :
デフォルトの名無しさん :2008/04/08(火) 00:39:14
railsのログが0.2秒でレスポンス返してるって事はRAILSには問題ない。 apacheのコネクション数の限界なんじゃないか? keepaliveさげてmacclient上げろ railsのログのDBの部分にはトランザクション外のDBの待ちは入って無いから注意 もうめんどくせーから これ以上は金払えwww
859 :
833 :2008/04/08(火) 01:59:33
>>858 有難うございます。すみません。
KeepAliveをさげるというのは、KeepAliveTimeOutを下げるってことで
良いのでしょうか。MaxClientsも上げました。
でも、軽くなりません。。
Apacheについても詳しくないので、設定の仕方が間違っているのかも
しれませんが、、
ちょっと気になるのが、railsのログでDBの処理時間が
ずっと0になってるんですが、これは、こういうもんなんでしょうか?
ともかく、色々いじって試してみます。
お手数お掛けしました。
mongrel_clusterのプロセス数だけど、 うちはjmeterで負荷かけてテストしてるよ。 あとはマシンスペックと相談かな。 スケーリングで困るのはDBを分けて分散させようとした時とか、 画像とかのコンテンツを別サーバに入れようとした時とか。 もし30台とかになったらマウントするのも苦労だろうし。 他にはpaginateが件数多くなった時に死ぬ。
>>823 Pythonはうちの会社では選択肢に入らないけど
実際Pythonで仕事やってるの?
今のところ、うちの会社はPHPとRuby(Rails)の2択。
PHPしかできない奴はPHPやらせて、
それ以外は状況に合わせてどっちか選択。
自分が担当できるものは全てRailsでやってる。
will_paginate を 2.2 にしたら ページが1と2だけになった(´;ω;`)
Railsで.htaccessを使わずにディレクトリ毎にアクセス制限をかけるにはどうしたら良いですか?
>>863 before_filter でIP制御でもしてろよwwww
とりあえず状況を詳しく書く作業に戻るんだ。
例えば rails_root/pubulic/works/user_001 /user_002 : というディレクトリをユーザ(ここではユーザ名user_001)登録時に作成します。 user_001さんはログイン後にuser_001ディレクトリ内のコンテンツにアクセスできますが、 user_002ディレクトリ内のコンテンツにはアクセスできないようにしたいです。
>>865 httpd.conf を書き換えればいいと思うよ。
publicの下に非公開のコンテンツを置いてる時点で負け。
アプリでログイン管理して /work/user にアクセスしたら全員自分のページが見れるようにすれば楽じゃね? というかディレクトリ内のコンテンツって共有ファイルじゃなかろうな? Rails云々じゃなくてディレクトリのアクセス制限でいい気がするが・・・
ありがとう。.htaccess使えばやりたいことは出来るんだけど、 認証ダイアログを出すのはスマートではないなと思ったてだけでした。
869 :
デフォルトの名無しさん :2008/04/08(火) 23:44:22
それはアクセスできない場所にファイル置いてrailsで認証してからx_send_fileで送信だ。 認証つけてapacheで直接処理したいなら.htaccess書くしかねーな
・OSに管理させる ・Webサーバに管理させる ・Railsに管理させる ・自前スクリプトで管理する このレベルから選択する必要があるな
ちょっとづつ荒れてきたな
872 :
デフォルトの名無しさん :2008/04/10(木) 01:54:43
初歩的な質問ですまん。 Railsでアプリ開発するとき、アプリで共通で利用するクラスとかモジュールって 皆さんどこに配置してるんすか?いわゆるユーティリティってやつ。 たとえば、アプリケーションでよく使う文字列処理をまとめた クラスをつくったものの、配置先がどこが適切なのかわからん。。 ちなみに今はinitializer配下においてる。 なんか使い方間違えてる気がしてる。
873 :
デフォルトの名無しさん :2008/04/10(木) 02:10:04
file_column でアップロードした画像を表示することができましたが、 編集画面がうまくいきません。 <% form_for :hoge, @hoge, :url => {:action => 'create'}, :html => {:multipart => 'true' } do |f| %>
以前、たぶんrails-2.0.1で作成し始めたアプリがあって、2.0.2になった今も ./script/console を起動すると、 Loading development environment (Rails 2.0.1) >> と表示されています。 ローカルの環境はrails-2.0.2にアップデートして、2.0.1は削除したつもり なのでちょっと気持ち悪いんですが、気にしなくてもよいのでしょうか? $ gem list -l rails *** LOCAL GEMS *** rails (2.0.2) $ ./script/console Loading development environment (Rails 2.0.1) >> RAILS_GEM_VERSION => "2.0.2"
environment.rb の RAILS_GEM_VERSION を 2.0.2 にする
877 :
873 :2008/04/10(木) 14:09:12
873です。 <% form_for :hoge, @hoge, :url => { :action => 'update', :id => @hoge.id }, :html => {:multipart => 'true' } do |f| %> としてみたがまだ解決できません。 Unknown action No action responded to Unknown action No action responded to 22 ← 編集中のid
>>877 Unknown actionってかいてあるじゃないか。
んなaction しらねーぞ!!
ってことじゃね?
879 :
875 :2008/04/10(木) 18:53:14
>>876 してるんですよね〜・・・
config/environment.rb
# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.0.2' unless defined? RAILS_GEM_VERSION
880 :
デフォルトの名無しさん :2008/04/10(木) 19:01:18
rake db:test:clone rake db:test:clone_structure rake db:test:prepare の違いがわからないです。 rake db:test:clone rake db:test:clone_structure の違いはわかるのだけど、これらと rake db:test:prepare の使い分けがよくわからないです。 どういう違いがあるのかどうか教えて下さい。
>>875 これとかは?
rake -T
...
rake rails:freeze:gems # Lock this application to the current...
rake rails:unfreeze # Unlock this application from freeze ...
>>879 freezeしっぱなしで忘れてるとか?
883 :
875 :2008/04/11(金) 00:46:12
>>881 >>882 rake rails:unfreeze
で、いけました!
freezeというのがよくわからないので、調べてみます。
どうもありがとうございました。
884 :
デフォルトの名無しさん :2008/04/12(土) 21:46:02
885 :
デフォルトの名無しさん :2008/04/12(土) 23:37:56
やっときたな。10年遅れか?
887 :
884 :2008/04/13(日) 01:20:41
自己解決しました。引数指定できるんですね。 教えて君ですみませんでした。
試せっていわれるだろうけど試した人いる? modrails 今テレビ来たところで試せないのでって言い訳だけど。
試そうと思ってるトコロなんだけど、virtualhost hoge.example.comの下で /app1と/app2をそれぞれ動かすような設定方法がわからん。 2.2 Deploying to a sub URI ってのは結局アプリ1つだけを/の代わりに/appのようなパスで動かすための 設定のようだし。
試した。CSSが反映されない。
httpd.confでAllowOverrideを無効にしたら解決した
>>888 導入自体はすごく簡単だった。
デフォルトでproductionで動くので
開発時はhttpd.confに
RailsEnv development
って書くのを忘れずに。
しばらく使ってみて問題が出ないか様子を見ることにする
893 :
888 :2008/04/13(日) 23:41:44
railsを初めてみようと入門書をざっと目を通してみたのですが、 以下のようなことはrailsではどう設定すればできるのでしょうか? webページでよくある構成で、フレームを複数に分割して上のフレームはタイトル固定で、 下のフレームでrailsアプリを動かしたい時に、railsはコントローラーがURL?になっているので ページ全体が遷移してしまうような気がするのですが、、、 要するに遷移先をここのフレームに表示みたいに設定できるかということです。 宜しくお願い致します。
898 :
859 :2008/04/16(水) 11:51:29
>>896 ,897
有難う御座います。
上のフレームには一回表示すれば更新の必要はないが、表示するのは重たい
ページだったとします。
下のフレームはrailsのコントローラーを使ってページ遷移をしたい際に、
フレームを使わないと全体に更新がかかる?ので上フレームも再読み込み
する必要なないのに、また読み込みを行い重くなるのを防ぎたいのです。
この場合は897さんのようにフレームを使わず、Ajaxでの部分的な読み込み
しかないのでしょうか?
>>898 まず rails を使わないフレームだけのサイトを作る
その後、下フレームを rails と差し替える
これでおk
900 :
898 :2008/04/16(水) 17:15:45
>>899 なるほど。
ではこのような場合はどうでしょうか?
--------------------------
| |←タイトルフレーム
|--------------------------|
| |
| |
| |
| |←メインフレーム
| |
| |
|--------------------------|
| |←ボタンフレーム
--------------------------
のような3分割のページがあったして、
「タイトルフレーム」は固定。「ボタンフレーム」は
色々なボタンが並んでいるフレームで、そのボタンを押した時の
各処理を「メインフレーム」に表示させたい。
「タイトルフレーム」、「ボタンフレーム」は1回しか読み込む必要はなし。
rails で frameset を使った例を色々調べてみたのですが、
見当たりませんでした。(iframeの例はありました)
度々すみませんが宜しくお願い致します。
今時フレーム・・・社内システムか何かか? てかタイトルフレームってなんだ? メニューヘッダのようなものじゃろうか。 キャッシュして静的ページ化すりゃいいじゃんと思ってしまうのだが・・・
902 :
デフォルトの名無しさん :2008/04/16(水) 19:44:12
パスワードのハッシュ化に使うsaltなどの設定をひとっところにまとめたいのですが、 どのようにするのがスマートでしょうか? _ _
いまどきフレームはあり得んな。 ショボく見えるだけ。 あと、HTMLというか、ページとURLの関係をちゃんと分かった方がよい。 フレームにしてもそれぞれのフレームにURLがあるだろ。
>>900 まず rails を使わないフレームだけのサイトを作る
その後、メインフレームを rails と差し替える
これでおk
>>902 saltってhashに含まれるでそ?常考
ランダム生成にしとけば?
Rubyの疑似乱数はたしかMT19937ですね
固定にするなら、ymlから読むようにでもするかな。
>>905 Railsでよく使われる認証系のパスワード暗号化って、暗号化した
値にsaltが付いてくるcryptとかじゃなくて「アプリ固有のsalt+パスワード」
のダイジェスト(SHA512とか)な実装が多いんだな。なんでだろ。
907 :
902 :2008/04/17(木) 20:24:07
あー、ごめんなさい。SHA1に固定のsaltをつける場合です。
>>905 ありがとうございます。
ymlということは、別途に自分で用意すればいいのでしょうか?
Railsで用意されている設定システムがあればそれを使用しようと思いまして。
具体的にはenviromentなんかにきれいに書けるとうれしいのですが。。
我儘言ってすみません><
>>906 固定のsaltで暗号強度的に事足りるからではないでしょうか。
値にそれぞれsalt用意するとなると、容量も食いますしカラムも一つ増えてまう。
crypt(3)のやり方だと、暗号文字列そのものがsalt付きだから カラム数的には増えることはないですね。 '1234567890'.crypt('$1$abcdefgh$') #=> '$1$abcdefgh$7KT./yJ8ONoodnM9VUtMO0' '1234567890'.crypt('ab') #=> "ab1iBa.N.U2C6"
cryptだと、暗号化済みのパスワードリストが漏れた場合に、 よくあるパスワードをその暗号化リストのsaltで暗号化して 照合することができるよね。(シャドウパスワードが考案された理由)
↑誤爆
なんでだろう。 普通の人なら流せるがコテだとウザい
controllersやmodelsの下に作ったクラスは誰がいつインスタンス化してるんですか? controllerが呼ばれる毎にrailsが作ってくれてるんでしょうか?
そうだよ
呼ばれる度に作られるわけではない
モデルデータのインスタンス化はfindだのcreateだのであなたが明示的にやってるはず。 クラスのロードは、基本的にはconst_missingを使ってる。
>>913 名前欄がヨコ7cmくらいに伸びてるからバカにしか見えないんだよね
コントローラーは呼ばれる度なのか?パフォーマンス的にどうなの?
インスタンスを1回使って寿命が終わりなら、そりゃパフォーマンスは最悪だろうな
ActionController::Base class << self def process(request, response) new.process(request, response) end end end リクエストごとにここを通るのかな。
馬鹿な俺にも分かりやすく…誰か・・・
rubyとrailsをインストールしたのですがrailsのソースってどこにあるんでしょうか?
>>923 gem envを実行して、GEM PATHSってところにリストされたディレクトリ
(たいていは1つ)のどれかの下にある
- activesupport-バージョン
- activerecord-バージョン
- actionpack-バージョン
- activeresource-バージョン
- actionmailer-バージョン
- rails-バージョン
925 :
923 :2008/04/20(日) 14:59:21
>>924 見つかりました!ありがとうございます。
ActiveScaffold が /module/aliasing.rb:31:in `alias_method': undefined method `find_full_template_path' for class `ActionView::Base' って出て動くかない(´・ω・`)
上にも似た質問あるけどRailsの各クラスのライフサイクルってどうなってるんですか? Controllerなんかのクラスのインスタンスは一度作られたらサーバ停止するまで使い回しですかね? もしそうならサーバ起動時に作っちゃった方が効率良さそうだけど。
>>927 そんなはずはない
HTTPリクエストがくるたびに新しく作られるんじゃなかったっけ?
rails本体・プラグインのクラスは最初の一度のみ developmentだとFW以外(app+lib)のクラスはリクエストの度リロード productionはリロードなし だったような気がする、間違えてたら指摘してくれ
>>930 そうそう、今その事も書こうかと思ってた
Controllerのインスタンスは毎回作り直し
ApplicationControllerとかまでリクエストの度にインスタンス作るってこと? それって意味あるの?
前のリクエストで作ったインスタンス変数が残ってたりするからかねぇ。
つかコントローラで作ったインスタンス変数のスコープって意味不明なんですけど。 そこら辺ちゃんと書かれた本って無いよね。
ビューからでも見えることの不思議なら、 あれはビューにコピーしているから。 とどこかで読んだ記憶はあるのだが、本ではなかったかも。
ソース読め
そういえば今日Railsのソース読んでてバグ見つけた。 喜び勇んで報告しようとしたらedgeではなおっていた。 ちっ。
リクエストの度にインスタンス生成って…railsが遅い理由が分かった
次にお前はリテラル評価のたびにインスタンス生成って、という
railsでMYSQLのストアドを呼ぶのはできますでしょうか?
railsの(というかrubyの)インスタンス生成が どれほどコストのかかるものか実際分からないから それで遅いとか重いとかなんかピンとこないなぁ プロセスのメモリ上にFWのクラス定義ロードされてりゃ そうでもなさそうな感じはするけどやっぱそうでもないのかね Javaとかはちゃんとインスタンス使い回しとかしてるんだっけ あとrubyはオブジェクトをダイナミックに書き換えれ過ぎるので 特にrailsみたいなリフレクションしまくりな作りのを元に インスタンス使い回すとしたら色々不具合出そうなイメージあるなぁ
>>941 同意
調べずにインスタンス生成=重い、と思い込むのもアレだ。
インスタンスは動的に変えられるから使い回すのは危険。
FWって何ですか?
・ファイアウォール ・フォワード ・フレームワーク さてどれでしょう?
ファイアワイア
どう考えても馬鹿げてる 全てのリクエストにインスタンス生成なんでしょ?重いとか以前じゃないの それともある規模以上のweb開発に対してははなっから諦めてる仕様なの? スクリプト言語なんてそんなもんなのかね
べつにコントローラオブジェクトの生成なんかたいしたコストじゃないよ。
HTTPリクエストを解析する方がよっぽどコストが高い。
特にRailsのHTTPパラメータ名は複雑だから、解析が重い。
あとはViewだよね。RailsのViewは遅すぎる。
>>946 Java厨乙
Javaでも最近のフレームワークはリクエストのたびにインスタンス生成して使い捨ててるよ。
えらそうなこというのはちゃんと調べてからにしときな
>>946 はバカにしても
>>947 も何の検証も出さずに断定してるのがなぁ
とりあえず重い派も重くない派も実際どれくらいのコストなのか測定してからにしてくれないと水掛け論にしかならないのだが
>>948 検証しなくても、HTTPリクエストパラメータの解析が重いことぐらいわかるだろ
だいたい、なんでコントローラのインスタンスを生成するのが重いと思うんだ?その根拠は何よ?
ビュー層はログ見てりゃ遅いのがわかるだろ
>>949 どっちにしても何もなしじゃ重いのかたいしたことないのか判断できないと言っている
全てRoRのせいにして他のチューニングをしないヤツが多すぎる。 大規模がどの程度の事指すのかしらんが、 キャッシュやらクエリチューニングやら、Apache・DBチューニングで Railsでもある程度の規模は十分捌けるぜ。 大規模になればなるほど、インスタンス生成云々よりも DB回りの方がよっぽどボトルネックになると感じた。
953 :
デフォルトの名無しさん :2008/04/23(水) 13:16:04
システム側適時作成するから入力してほしくない値のvalidateってどうやればいいでしょうか?
教えてください。submit等で次のアクションをしページ移動したとき、 ブラウザの戻るボタンで戻るとページが空白になります。再表示ボタンを押すと 「情報を再送信しないとページを更新できません」とでますが、 これって回避できないのでしょうか?そもそもブラウザの戻るボタンで正常に戻るのは 構造上むりなのでしょうか?
単純にファイルを指し示す場合は #{RAILS_ROOT}/public/sample.html のように書けますが、 actionを呼ぶURLに対してRAILS_ROOTのような変数を使うことは出来ないでしょうか? #{RAILS_ROOT}/app/controllers/アクション名 #{RAILS_ROOT}/アクション名 いずれも無理でした。
957 :
954 :2008/04/23(水) 17:06:38
>>955 ありがとうございます。さっそく行ってきます。
>>956 何がしたいのかイマイチ分からないけど、
ファイルじゃないから呼べないぞ。。。
RAILS_ROOTはPathの文字列だしな・・・
params[:action] とか url_for :contoller => 'a' ,:action => 'b'
じゃダメかい?
それかボタンからアクション実行したいなら
<%= button_to 'これはボタン' , {:contoller=> 'foo' , :action => 'baa'},{} %>
で実行できるが・・・
>>953 Model.new(params)に入れられても使わずプログラムで設定する
という目的なら attribute_protected
違うならそう書いて。
>>956 何がしたいのか分からんが、
@template.prepend(append)_view_pathとか(名前失念)で
テンプレートファイルを探す場所を増やすことは出来る。
960 :
953 :2008/04/23(水) 22:28:14
>>959 ありがとうございました、その通りです _ _ > attr_protected
>>961 お、Rails2対応か。
翻訳版マダー?
RailsによるアジャイルWebアプリケーション開発 第2版 - 2007/10/26 Agile Web Development With Rails - 2006/12 ぺでふ版買おうかな。。
link_to 'Show', @item の動作の仕組みをおしえて。第2引数にモデルオブジェクトを指定するだけで、 なんでURLがわかるの?Object#to_url とかでも定義されるの?
>>965 link_toのURL部分がItem < ActiveRecord::Baseだと結局は
item_url(@item)
が呼ばれる。(see PolymorphicRoutes#build_named_route_call)
あとはNamed Routesの仕事だが、ルーティングの実装は読むのがめんどいな。
>>966 ちょーさんくす
item_url(@item) が @item でもいけるようになっているのね
短く書けるのはいいけどわかりづらい
>>789 よかったら他言語のRoRの派生系教えてほしす。
このスレで聞くのも何なんだけど。
・Gauche/Kahua
・Scala/lift
他
Liftはしらんのだけど、KahuaはRoRとは関係ないよ。 継続ベースで思想からして違うよね。
PHPは沢山あるな。 PHP on TRAXとかいうRailsを丸まるコピペすることを目標としている奴もあるがあんま栄えてない。 使うとしたらCake PHPかSymfonyになるのかな。Cake PHPはRailsに比べると貧弱だけど。
コピーはしょせんコピーだからなあ。どこかでオリジナリティを 出さないと勝てないよ。 ところで、DjangoとGAEがもろかぶりなんだけどいいのかなあ。
へたにオリジナリティだして失敗するよりは、忠実に移植してくれた方がうれしいのは俺だけ?
ドコモ携帯のiモードIDを取得するためにURLに?guid=ONを付与させたいです。 def default_url_options(options) { :guid => 'ON' } end application.rbに上記を記述し、その箇所はdocomoだけが読み込むようにしています。 それなのに他携帯・PCでも?guid=ONが付与されてしまって困っています。 これはdefault_url_optionsの仕様なのでしょうか?
>>973 >その箇所はdocomoだけが読み込むようにしています。
が間違えているんじゃね?
>>974 たしかにその可能性が一番高いと思ったので何度も確認しました。
def check_access_type
case access_type
when 1
def default_url_options(options)
{ :guid => 'ON' }
end
when 2
else
end
end
だいぶ改変して簡単にしてありますが、もしかするとRubyの仕様でdef〜endの中にdef〜endを書くと必ず評価されてしまうのかなと。
そんな事はあるのでしょうか?
Rubyの関数内関数は、他の言語と違うはず
>>975 Rubyのマニュアルの「クラス/メソッドの定義」ってとこを読みなおしたほうがいいよ
978 :
デフォルトの名無しさん :2008/04/28(月) 20:10:47
ZenTest で lib/* をテストするような設定ってどうするんでしょうか??
>>975 >だいぶ改変して簡単にしてありますが、もしかするとRubyの仕様でdef〜endの中にdef〜endを書くと必ず評価されてしまうのかなと。
そうじゃなくて、一度評価されたらそれ以降も有効になっているという話だろ。
def のなかで def をしなくていいコードに変更して試してみたら?
Ruby の def foo def bar end end は、foo が実行された時に bar が定義される。 ALGOL系のネストした定義とは趣が異なる。
javaから来た人は最初は躓くところ多いよね
「RailsによるアジャイルWebアプリケーション開発」 の最初の版の方って、まだ使えますか?
>>981 1.2系と2.0系の違いを意識しながらなら読めなくもないが、経験者でもない
限り、その違い自体を知らないはずなので戸惑う可能性が高い。
第3版で2.0対応になるが、まだ原書のベータが出たばかりで、正式版が出る
のは今年10月くらいの予定。英語でいいならこれのPDFでかまわないと思う
けど、日本語のがいいなら、現行で2.0対応と書かれている和書から見繕うの
がよいでしょう。
見て分かると思うけど、レス番ミスで
>>982 宛です。
>>983 ありがとう。
出た当初に買って、途中までやったままだったんです。
2.0対応のを探してみます。。。とほほ。
986 :
975 :2008/04/29(火) 13:12:55
勉強になりました!
かなりはまってたので助かりました
あと半角スペースは2chでは消去されるのですね
>>975 はインデントしたつもりだったのですが見づらくてすみませんでした
987 :
デフォルトの名無しさん :2008/04/29(火) 22:24:26
初心者です。 ビューからロジックを独立させた方がイイらしいとの事ですが、 そのロジックって、ヘルパーに記述かコントローラーに記述かって 基準は何になるんですか?
杓子定規に決めるものでもないと思うが、自分の基準では、 表示すべきデータをこしらえるのはコントローラ。 作ったデータをインスタンス変数にセットして、扱いはビューに任せる。 コントローラのテストではassignの内容をテストする。 ヘルパーに置くのはHTMLを生成するメソッドが中心かなぁ。
_menu.rhtmlのように名前が「_」で始まる部分テンプレートってのがありますが、 複数のコントローラから使いたいときはviews/sharedフォルダの下に置く、と本で読みました。 このsharedというフォルダ名は規約で決まってるんですか?
railsではテーブル名を複数形で指定するようですが, lifeのように不可算の名詞の場合はどうすれば良いのでしょうか?
>>989 テンプレート名に/が含まれているときは最後の/の左のパートがディレクトリ
とみなされ、相対パスの基点であるapp/viewsから検索される。
基点になるディレクトリはprepend_view_path, append_view_pathで追加可能。
>>990 lifeは意味によっては可算名詞(pl. lives)ですな。
# 不可算名詞が行をなすテーブルてのも何か変な気がする。
標準の語尾変化で対応できないだけで、あくまで複数形を使うという
方針に従いたいなら、
config/initializers/inflections.rb
で語尾変化を追加定義する。
あるいは、テーブルの名前を明示。
class Life < AR::Base
set_table_name 'life'
end
992 :
989 :2008/04/30(水) 01:06:09
>>991 素敵な返答ありがとうございます!よく分かりました。
993 :
デフォルトの名無しさん :2008/04/30(水) 14:34:44
Roby on Rails初心者です。WinXPでRails 2.0.2をインストールして、まずは定番の『hello world』をlocalhostのトップページに表示を試みました。
(1)DOSコマンドプロンプトで新規プロジェクトを作成(プロジェクト名hello)
C:\ruby>rails hello
(2)ウェブサーバを起動(デフォルト3000番ポート)
C:\ruby>cd hello
C:\ruby\hello>ruby script\server
(3)DOSコマンドプロンプトをもう一枚開いてMVCのC(コントローラ)を作成
C:\ruby\hello>ruby script\generate controller Top
C:\ruby\hello\app\controllers\top_contorller.rbに下記のようにindexメソッドを追加する。
class TopController < ApplicationController
def index #add
@message = "Hello world" #add
end #add
end
(4)MVCのV(ビュー)を作成
C:\ruby\hello\app\views\top\index.rhtmlに以下を記述して保存。
<%= @message %>
(5)マッピング C:\ruby\hello\config\routes.rbに一行追記
ActionController::Routing::Routes.draw do |map|
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
map.connect '',:controller=>"top", :action=>"index" #add
end
ブラウザで
http://localhost:3000にアクセスしても 、『hello world』は表示されずです。
http://localhost:3000/top/indexだと期待どおりに 、『hello world』が表示されるので、
(5)のマッピングがうまくいってないのでしょうか? 何が悪いのか教えてください。
>>993 routes.rbに
map.connect '', :controller => 'top'
って書いてもう一回やってみ
routes.rbのマッピングは上から評価されるから map.connect ':controller/:action/:id' map.connect ':controller/:action/:id.:format' は一番下に書いておくといいよ。
996 :
デフォルトの名無しさん :2008/04/30(水) 15:04:28
993です。routes.rbを以下にしてみましたがダメです。 ActionController::Routing::Routes.draw do |map| map.connect '', :controller => 'top' map.connect ':controller/:action/:id' map.connect ':controller/:action/:id.:format' end Railsの『Welcome aboard』のページが表示されます。
998 :
デフォルトの名無しさん :2008/04/30(水) 15:14:07
>/public/ 配下にindex.htmlってある? 消したら、期待どおりの結果になりました。 ありがとうございました。
1000 :
デフォルトの名無しさん :2008/04/30(水) 15:20:32
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。