【Ruby】Ruby on Rails Part8
1 :
nobodyさん :
2009/09/13(日) 20:49:34 ID:kz4rC4Dx
前スレ999は何が言いたかったのだろう。
O2
4 :
1 :2009/09/13(日) 20:53:14 ID:???
5 :
1 :2009/09/13(日) 20:55:27 ID:???
立てました。
ところで
>>4 の変遷って、今後もいるのかな?
次スレを、いつ誰が立てることになるのかはわからないけど、
ちょっと疑問に思ったので今のうちに議論しておいたほうがいいかなと思いました。
前のスレで rdocのview sourceが素晴らしい と言ってる方がいましたが、これは何のことでしょうか?
>>5 > ところで
>>4 の変遷って、今後もいるのかな?
個人的には前スレだけで十分
代わりに定番プラグイン一覧みたいなのが欲しいところ
> 次スレを、いつ誰が立てることになるのかはわからないけど、
> ちょっと疑問に思ったので今のうちに議論しておいたほうがいいかなと思いました。
>>950 が立てること、とかでいいじゃないか。
そういうルールもテンプレに含めておくべきだな。
自分も前スレだけで十分。
次スレは
>>950 が立てればいいと思う。
>>7 ドキュメントにソースがついているところじゃないかな?
俺はRailsのchmしか使ってないけど、メソッドのところ見ると、該当ソースが見れる。
これがえらく便利。
わがまま言えば、該当ソース内で他のメソッドクリックするとそのソースも見れる、みたいなのだともっといいんだろうけどねえ…。
chmジャム陸際な
980くらいでも大丈夫
名前付きルートにモデルインスタンスを渡すソースをよく見ます。 @entry = Entry.new(params[:entry]) redirect_to entry_url(@entry) みたいな感じです。 ネットなどで調べると、名前付きルートentry_urlの引数はidしか渡せないようなのですが、 モデルインスタンスが渡された場合はインスタンスからidを取り出すなどの特別扱いをされるのでしょうか?
13 :
5 :2009/09/14(月) 02:08:24 ID:???
>>12 > ネットなどで調べると、名前付きルートentry_urlの引数はidしか渡せない
ハッシュも渡せるYO!!
entry_url(:id => 10)
こういう、引数の色んな渡し方が可能なメソッドは大抵
is_a? とか respond_to? を使って実行時型チェックをやってるので、
その一環としてモデルオブジェクトからは id を取得するようになっているのだろう。
ソース追っかけたわけではないので推測だけど、、、
>>12 url_forのドキュメントとソースが参考になるのではないかと
>>15 rdoc --inline-source(-S)
>>15 >>1 にあるRailsの公式APIリファレンスや github でホスティングされている
gem の rdoc なんかはそうなっているから、そっちを参照したら?
ローカルのgemや自作ライブラリのドキュメントを生成するなら
ひとまず rdoc の使い方を覚え、gem server などでググる必要があると思われる。
でも自分はあんまりローカルgemのrdocは見ないなあ、大抵guthubの方を見る
railsだとrake doc:railsってコマンドでもドキュメント作れるけど、このコマンドはみんな使ってないの?
どんなコマンドがあるのかわからん コマンド一覧表作ってくれんかな
zsh だと rake <Tab> でコメント付きのタスク一覧を補完候補として表示してくれたりする
DBの設計の質問なのですがrailsが絡むのでここで質問させてください。 webシステムでユーザーのテーブルを作りたいのですが、memberテーブル(一般ユーザー)とadminテーブル(管理者ユーザー)に分けて作ろうと思っています。 ただし名前やパスワードなど共通するカラムはuserテーブルに切り出します。 この時、userテーブルとmember&adminテーブルの関連はどのように作るべきでしょうか? 以下のように@とAの二つ考えてみたのですが、どっちが良いのか分かりません。 @memberテーブルとadminテーブルそれぞれにuser_idカラムを作り、memberとadminからuserを参照する。 Auserテーブルにuser_id(memberテーブルのidまたはadminテーブルのidを格納する)とuser_type("member"または"admin"を格納する)を作り、userからmemberとadminを参照する。 3つのテーブルの関係を考えるとuserがmemberとadminの親になるのが自然なので@の方が良いのかなと思うのですが、 Aの方法だと、railsのポリモーフィック関連で3つのテーブルの関連付けができるため便利です。(@だとuserとmember、userとadminを別々に関連付けするのでmemberとadminに関連性が無くなる) どっちのやり方が適切でしょうか?
>>23 個人的には polymorphic associationが好み。
あまり美しくないが、一応選択肢として:
Rails的にはSTI(Single Table Inheritance)がお手軽。
3つ目の案として、UserとRoleの2つのモデルで一般ユーザ、管理者を表現するのはどうかな。 rolesテーブルには一般ユーザと管理者のレコードを入れて権限マスタとして使う。 で、usersテーブルにrole_idを持たせる。
26 :
25 :2009/09/14(月) 22:08:23 ID:???
27 :
23 :2009/09/14(月) 22:13:49 ID:???
>>24 やはりrailsの場合polymorphicが良いのですね。
Single Table Inheritanceは知りませんでした。少し調べてみたら@でやる場合はすごく便利そう…validationもuserモデルに書くだけで良くなるからむしろAより綺麗かも?
polymorphicかSTIかでもうちょっと考えてみます。
ありがとうございました。
28 :
23 :2009/09/14(月) 22:16:12 ID:???
>>25 ありがとうございます。
Aとは違うような…3つテーブルを作らないということですよね?
Railsとか関係なしにAは駄目だろ memberとadminを区別しないで扱いたい時とか破綻する
30 :
23 :2009/09/14(月) 22:26:53 ID:???
破綻しますか?Aの場合でもuserからmemberとadminを辿れるから問題無いと思うけど。
31 :
nobodyさん :2009/09/14(月) 22:44:58 ID:0t6wUMUL
コントローラをあえてRESTfulにしたくない場合(フォーム→確認画面→完了画面、のようなものを考えています)、どのようにしたらよいでしょう? config/routes.rb から該当コントローラの map.resources 行を削ると、以下のエラーになってしまいます。 Showing app/views/hoges/fuga.html.erb where line #3 raised: undefined method `hoges_path' for #<ActionView::Base:0xb755f00c> Extracted source (around line #3): <% form_for(@hoge) do |f| %> なお該当ビューで hoges_path メソッドを使用している箇所はありません。
>>31 form_forでエラーになっているのであれば、form_tag使えばいいんじゃない?
<% form_tag(:action => アクション名) do %>
<%= text_field(:hoge, :name) %>
以下略
<% end %>
>>23 わざわざ二つに分ける意味がわからん
なぜ二つに分けようと考えたんだ?
メンバーから管理者に変更するときとか面倒そうだな
userテーブルは要らないな。memberテーブルとadminテーブルだけあれば済むこと。
36 :
23 :2009/09/15(火) 02:04:52 ID:???
何度もすいません。
memberテーブルとadminテーブルに分けたのは、一般ユーザーと管理者ユーザーで必要なカラムが違うからです。
userテーブルを作ったのは、ログイン認証の時に一つのテーブルを見るだけで済むようにするためです。
restful_authenticationなどのプラグインなどを使う場合ユーザー認証のテーブルが二つあるとやっかいだと思いました。
>>34 さんが言うように変更が面倒くさそうなので、userテーブルだけ作ってmember固有のカラムもadmin固有のカラムもuserに突っ込むことも考えましたが、
そうしてしまうと今度はmemberとadmin以外の種類のuserが必要になった時に大変だと思いました。
自分なりに考えた結果、userとmemberとadminの3つのテーブルを用意するのがいいと判断しましたが、一般的なwebシステムではこういう分け方はあまりやらないのでしょうか。
37 :
nobodyさん :2009/09/15(火) 03:06:36 ID:AVq3Mqvr
この流れの中、恥を忍んで聞くのですが、個人で作ってるシステムで、 「管理者=自分」と「その他ユーザー」という区別しかない場合、 特定のID(例えば 1)を持つユーザーが管理者、とハードコードしてしまうのって どうなんですかね? role を導入しようかと思ったんですが、 管理者か否かの二値を区別するのに roleテーブルも大げさかなと
accessor isadmin
39 :
nobodyさん :2009/09/15(火) 09:01:10 ID:Gt2owe1a
>>37 role導入でいいと思う。今は2つの値しか扱わないとしても、ハードコーディングするより全然いい。
40 :
37 :2009/09/15(火) 12:30:53 ID:???
>>39 ありがとうございます。
今後のことも考えて role を導入してみます。
roleってなんだ???
堂島role
質問があります。
バリデーションエラー時に、エラー箇所を赤く表示したいのですが、微妙に変な挙動になります。
<div class="fieldWithErros">が挿入されるため、場合によって画面が崩れてしまいます。
そのため下記サイトのように、<span ...>に置き換えるようにしたのですが、
そうすると、textareaのような要素が何故か、背景が赤くならずに下だけが赤くなります。
多分、<span>がinlineで<textarea>がblockなせいだとは思うのですが・・・
うまく解決する方法はないでしょうか?
ちなみに、下記サイトのcssを追加した場合は、赤い背景のほかに赤い枠がとびでて不恰好になってしまいます・・・。
.fieldWithErrosがtextareaだけ変な件, ファイルアップロードのvalidates, option_groups_from_collection_for_select 使ったらfieldWithErrorsが出なくな.. - capsctrldays(2006-04-14)
http://capsctrl.que.jp/kdmsnr/diary/20060414.html
44 :
nobodyさん :2009/09/15(火) 20:23:27 ID:Gt2owe1a
>>43 divのままでも
div.fieldWithErrors {
display: inline;
}
こうすれば崩れなくなると思う。
capistranoの質問があります。 先日より、本番鯖でcapistranoでのデプロイがエラーはくようになり困っております。 どのような原因が考えられますでしょうか? テスト鯖へのデプロイはほぼ同じ設定で問題なくできています。 環境: デプロイ先(テスト鯖staging、本番鯖production) ・Ubuntu 8.04 LTS ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux] デプロイ元: Windows XP SP3 Ruby 1.8.7 ・ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32] ・Capistrano v2.5.5 以下、エラー内容 > cap production deploy:cold * executing `production' triggering start callbacks for `deploy:cold' * executing `multistage:ensure' * executing `deploy:cold' * executing `deploy:update' triggering before callbacks for `deploy:update' * executing `gems:install' * executing "cd /home/www/my_project/current && rake gems:install RAILS_ENV=production" servers: ["my.example.com"] [my.example.com] executing command ** [out :: my.example.com] (in /home/www/my_project/releases/20090730101805) command finished ** transaction: start * executing `deploy:update_code' executing locally: "svn info svn+ssh://my_repogitory/my_project/trunk -rHEAD" * getting (via checkout) revision 102 to C:/DOCUME~1/ore/LOCALS~1/Temp/20090915103237 executing locally: svn checkout -q -r102 svn+ssh://my_repogitory/my_project/trunk C:\DOCUME~1\ore\LOCALS~1\Temp\20090915103237 compressing C:/DOCUME~1/ore/LOCALS~1/Temp/20090915103237 to C:/DOCUME~1/or/LOCALS~1/Temp/20090915103237.tar.gz
executing locally: tar czf 20090915103237.tar.gz 20090915103237 servers: ["my.example.com"] ** sftp upload C:/DOCUME~1/ore/LOCALS~1/Temp/20090915103237.tar.gz -> /tmp/20090915103237.tar.gz *** [deploy:update_code] rolling back * executing "rm -rf /home/www/my_project/releases/20090915103237; true" servers: ["my.example.com"] ** [deploy:update_code] exception while rolling back: IOError, closed stream D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/transfer.rb:156:in `[]=': undefined method `[]=' for nil:NilClass (NoMethodError) from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/transfer.rb:207:in `handle_error' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/transfer.rb:48:in `process!' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/transfer.rb:43:in `loop' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/transfer.rb:43:in `process!' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/transfer.rb:11:in `process' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/actions/file_transfer.rb:40:in `transfer' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/connections.rb:170:in `execute_on_servers' from D:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `each_slice' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/connections.rb:158:in `each' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/connections.rb:158:in `each_slice' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/connections.rb:158:in `execute_on_servers'
長すぎて容量制限にひっかかる(泣 from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/actions/file_transfer.rb:38:in `transfer' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/actions/file_transfer.rb:26:in `upload' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/recipes/deploy/strategy/base.rb:43:in `send' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/recipes/deploy/strategy/base.rb:43:in `method_missing' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/recipes/deploy/strategy/copy.rb:99:in `deploy!' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/recipes/deploy.rb:204:in `load' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:128:in `instance_eval' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:128:in `invoke_task_directly_without_callbacks' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/callbacks.rb:27:in `invoke_task_directly' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:81:in `execute_task' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/namespaces.rb:186:in `send' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/namespaces.rb:186:in `method_missing' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/namespaces.rb:104:in `update_code' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/recipes/deploy.rb:185:in `load' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:48:in `transaction'
from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/namespaces.rb:186:in `send' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/namespaces.rb:186:in `method_missing' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/recipes/deploy.rb:184:in `load' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:128:in `instance_eval' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:128:in `invoke_task_directly_withou t_callbacks' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/callbacks.rb:27:in `invoke_task_directly' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:81:in `execute_task' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/namespaces.rb:186:in `send' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/namespaces.rb:186:in `method_missing' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/namespaces.rb:104:in `update' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/recipes/deploy.rb:464:in `load' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:128:in `instance_eval' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:128:in `invoke_task_directly_without_callbacks' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/callbacks.rb:27:in `invoke_task_directly'
from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:81:in `execute_task' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/configuration/execution.rb:93:in `find_and_execute_task' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/cli/execute.rb:45:in `execute_requested_actions_without_help' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/cli/execute.rb:44:in `each' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/cli/execute.rb:44:in `execute_requested_actions_without_help' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/cli/help.rb:19:in `execute_requested_actions' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/cli/execute.rb:33:in `execute!' from D:/ruby/(略)/capistrano-2.5.5/lib/capistrano/cli/execute.rb:14:in `execute' from D:/ruby/(略)/capistrano-2.5.5/bin/cap:4 from D:/ruby/bin/cap:19:in `load' from D:/ruby/bin/cap:19 これでエラーメッセージ終わりです。 ご助言いただけると幸いです。
>>44 やってみたのですが、<span>のときと同じように、
背景がうまく赤くならずに、textareaのときは下の方だけが赤くなったりしてしまいます・・・。
51 :
nobodyさん :2009/09/15(火) 20:50:52 ID:Gt2owe1a
>>50 とりあえず、デザインの崩れは解決したんだよね?
あとはcssを調整すればなんとかなるはず。
.fieldWithErrors textarea {
background: #ff0000;
}
で、いけないかな?
>>46 SFTPTransferWrapperの中でコケてるようだけど、うーん……
公開鍵の有無とかパスワード認証の許可状況とか?
突然ならディレクトリの容量が足りないんじゃなくて?
54 :
45 :2009/09/16(水) 11:14:19 ID:???
ありがとうございます。
書き忘れましたが、本番鯖の設定とテスト鯖の設定の切り替えにcapistrano-extというgemを使っています。
>>52 こちらでもソースを見ていたのですが、やっぱり、SFTPがおかしいのですかね…。
サーバー側のsshd設定何か弄ったかな…うーん。
本番サーバーにwinscpのSFTPで同じユーザーで適当な10MBくらいのファイルを何度か転送してみましたが、
問題ない感じでした。
capistrano側の設定なのかな…
ほぼ同じcapistranoの設定(ドメインとssh接続portのみ異なる)でテスト環境では問題ない点が?です。
sshは公開鍵を使っていますので、鍵の設定も見直してみます。pageantを併用していたはず
>>53 昨日、サーバーでdfで確認してみましたが、転送先のディレクトリ(/home/www/my_project)含むパーティション、
及びアーカイブ一時展開先の /tmpともに問題なく空いていました。
しかし、念のためもう一度確認してみます。
>>54 まさかとは思うが、root でログインしようとかしてないよね?
PermitRootLogin no で弾かれてるとか
Railsでmigration使わない開発ってアリでしょうか? 使い慣れたDB設計ツールからSQL吐きたいってのは邪道ですか?
57 :
45 :2009/09/16(水) 19:23:55 ID:???
>>52 公開鍵の設定はpageantを使ってあり、capistranoで使用しているNet:sshはwindows環境では
pageantを使ってくれるみたいです。
>>53 確認したところ、ディスク残り容量は問題ありませんでした。
>>55 下記のようにdeploy.rbで設定してあり、rootではログインしていません。sshはrootログインは弾いています。
set :use_sudo, false
set :user, "www-data"
なお、上記ユーザーでsshクライアント(Poderosa3)でのログインを及び、
winscpでのsftp転送が可能なことは確認しています。
58 :
45 :2009/09/16(水) 19:35:00 ID:???
解決しました(`・ω・´) sshdの設定がテスト環境と違っていたので、修正してみたところ無事デプロイが通るようになりました。 /etc/ssh/sshd_config にて、 ClientAliveInterval 15 ClientAliveCountMax 3 ↓ ClientAliveInterval 60 のように修正しsshdを再起動したところ、うまく行くようになりました。 他のsshクライアントでうまく行くから他の原因かと思ってました。 みなさまのおかげさまです。ありがとうございました。
普通にナシだろう。逆に手間かかるのがオチ
>>60 既存DBを使うようなものは作ったことがないんですね。
62 :
nobodyさん :2009/09/16(水) 23:03:54 ID:hMTblvM+
今回初めてCapistranoを使いRailsアプリケーションのデプロイ作業に取り組んでいるのですが、 cap deploy コマンドを入力し、パスワードを入力した後の処理がエラーになって先に進みません。 ネットで調べたのですがどうも原因が分からず、3日ほどハマっています。 もしよければ、以下のエラーの内容から解決方法のアドバイスを頂けないでしょうか。 クライアントマシンはWindowsVista、リポジトリはBuffaloのLinkStationにあり、サーバはFedora 10です。 C:\InstantRails\rails_apps\demo>cap deploy * excuting `deploy' * excuting `deploy:update' ** transaction: start * excuting `deploy:update_code' excuting locally: "svn info file:///L:/demo/branches/stable -rHEAD" *** excutable `svn' not present or not in $PATH on the local system! * excuting "svn export -q -r3 file:///L:/demo/branches/stable /home/tyn/www/demo/releases/20090916124357 && (echo 3 > /home/tyn/www/demo/releases/20090916124357/REVISION)" servers: ["tyn-market.com"] Password: [tyn-market.com] excuting command ** [tyn-market.com :: err] svn: URL 文字化けしている ra_local 文字化けしている ** [tyn-market.com :: err] svn: 文字化けしている 'file:///L:/demo/branches/stable' 文字化けしている command finished *** [deploy:update_code] rolling back * excuting "rm -rf /home/tyn/www/demo/releases/20090916124357; true" servers: ["tyn-market.com"] [tyn-market.com] executing command command finished failed: "sh -c 'svn export -q -r3 file:///L:/demo/branches/stable /home/tyn/www/demo/releases/20090916124357 && (echo 3 > /home/tyn/www/demo/releases/20090916124357/REVISION)'" on tyn-market.com エラーメッセージの中に文字化けしている個所がいくつかあります。
63 :
nobodyさん :2009/09/16(水) 23:05:46 ID:hMTblvM+
エラーメッセージは以上です。 よろしくお願い致します。
>>60 幸せな環境で仕事してるんだろうなぁ。羨まし
>>62 excutable `svn' not present or not in $PATH on the local system!
ってことじゃんか?
ローカルとリモートでsvnが使える?
>>62 > ** [tyn-market.com :: err] svn: URL 文字化けしている ra_local 文字化けしている
> ** [tyn-market.com :: err] svn: 文字化けしている 'file:///L:/demo/branches/stable' 文字化けしている
これ、ディプロイ先でチェックアウトしようとしたときにsvnが受け取っている
リポジトリパスなんだが、たぶんローカルでチェックアウトするときのをそのまま
使ってるよね?
67 :
nobodyさん :2009/09/17(木) 10:14:22 ID:AsBV+oBz
vim-railsで変数の定義部にジャンプする機能ってないですかねぇ?? 統合開発環境であるような。 そもそもvimではそういうのって無理なのかしらん。 エディタの話になってしまって申し訳ないですが・・詳しい方いたら教えていただけると幸いです。
>>62 サーバー側でsvnからチェックアウトしようとして失敗しているのかな?
もし、サーバーからアクセスできないsvnリポジトリを使っているなら(例えば、ローカルにあるとか)、
set :deploy_via, :copy
を指定すれば、
ローカルでsvnからチェックアウト→tar.gzで固めて→sftpでデプロイ先に転送→デプロイ先に解凍
してくれる。
以下は記述例:
set :repository, "svn+ssh://my_svn/my_project/trunk" #(例) ローカルからアクセス可能なリポジトリURL
set :deploy_to, "/home/www/#{application}" #(例)デプロイ先のディレクトリ
set :deploy_via, :copy
railsで80000pv/日のサイト運営したいんですけど月何万ほどかかりますか?
PHP の 3 倍くらいかな
80000pv/日のコンテンツ(ネタ)を持っているだけでうらやましい エロサイトかなにか?(悪く行っているのではありません) 技術を身につけても、プライベートではサイトを開くネタがないよ。 (本業が SE なので、仕事では顧客から請け負った業務イントラを Rails で作っているけど)
73 :
nobodyさん :2009/09/17(木) 15:19:26 ID:WSgiLhix
>>65 , 66, 68
回答有り難うございます。Railsデプロイ読みながらやっているのですが、バージョン管理システムを使うのも初めてなものでして。。
"リモート"がリポジトリのあるLinkStationで、"ローカル"が開発作業をしているWindowsマシンで、"サーバ側"がデプロイ先のLinuxマシンという理解で良いでしょうか?
ご指摘の通りサーバ側からLinkStationにアクセスできる設定にはしておらず、ローカルでチェックアウトするときのパスがそのまま使えると思っていました。
ローカルのSubversionを使ってデプロイ先のサーバにアクセスしていると勘違いしていました。
サーバ側のSubversionは何か設定やリポジトリの作成??が必要なのでしょうか。手元にある書籍では殆ど触れられておらず、今ひとつ全体像がつかめずにいます。
何かあれば助言頂けないでしょうか。よろしくお願いします。
set :deploy_via, :copy も試してみようと思います。
サーバ側でsmbclientなどを使ってLinkStationのファイルを共有する設定にしても よさそうね。
Rails3.0っていつ出るんだい?
年内にはβに到達しないと予測。
>>73 Fedoraの方にログインして
ssh でも http でも samba でもなんでもいいからやりやすいので LinkStation にアクセスできるようにして
$ svn ls リポジトリ
が通ればOK
set :deploy_via, :copy はサーバ側を弄らせてもらえない場合の最終手段かな
78 :
nobodyさん :2009/09/18(金) 12:52:28 ID:ITCAk7dP
これからrailsやろうと思ってる者です。 そして、インストールの時点でコケてしまいました。 $gem install rails ERROR: While executing gem ... (Zlib::BufError) buffer error なので、gemをアップデートしました。 $gem update --system $gem update windows再起動 $rails install rails ERROR: While executing gem ... (Zlib::BufError) buffer error ・・・。 この場合、どうすればインストール出来ますか? ぶしつけですみませんが、教えて!エロい人!
79 :
nobodyさん :2009/09/18(金) 12:56:06 ID:ITCAk7dP
>>78 です。
情報が足りてませんでした。
Windows XP SP3
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
gem 1.3.5
です。
zlib入れろ
81 :
nobodyさん :2009/09/18(金) 13:56:09 ID:ITCAk7dP
>>80 返信ありがとうございます。
調べてみたところ、zlibが存在してるんですが、別口で入れるものでしょうか?
C:\ruby\bin>ls zlib*
zlib1.dll
82 :
nobodyさん :2009/09/18(金) 14:50:59 ID:LN3EfzwI
>>74 , 77
smbclientで共有してみましたが cap deploy 失敗してしまいました。
65さんのおっしゃる
>>excutable `svn' not present or not in $PATH on the local system!
このエラーメッセージが毎回出現します。意味がよく分からないのですが、どういうことでしょうか?
重ね重ねすみません。
>>82 svn コマンドが PATH から見つからないって言っているんじゃないの?
84 :
nobodyさん :2009/09/18(金) 17:26:03 ID:LN3EfzwI
>>83 WindowsでもLinuxの方でもsvnコマンドは実行出来るのですが、まだ何かパスを通さなければいけないのでしょうか?
それか、LinkStationにもSubversionをインストールしなければならないとかでしょうか。。
>>84 ディプロイ先にログイン(svnを実行できるケース)して
$ echo $PATH
$ which svn
次に、capistranoから
run 'echo $PATH'
してみたらどうなる?
86 :
nobodyさん :2009/09/18(金) 18:21:16 ID:LN3EfzwI
>>85 $ echo $PATH
/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/tyn/bin
$ which svn
/usr/bin/svn
以上コマンド入力の結果です。
>>次に、capistranoから run 'echo $PATH' してみたらどうなる?
deploy.rbに run 'echo $PATH' というコードを記述すればよいのでしょうか?
間違っていたらごめんなさい。
あー、 $ cap invoke COMMAND='echo $PATH' でいいや。と思ったが、/usr/bin/svn なら cap から実行したときも 見える可能性が高いな。 > excutable `svn' not present or not in $PATH on the local system! んん、ローカル!?
>>84 > それか、LinkStationにもSubversionをインストールしなければならないとかでしょうか。。
え? LinkStation にリポジトリがあるって言ってなかったか?
>>84 >それか、LinkStationにもSubversionをインストールしなければならないとかでしょうか。。
file:でやってるなら不要。
90 :
nobodyさん :2009/09/18(金) 19:19:19 ID:LN3EfzwI
>>88 mkdir L:\demo
svnadmin create L:\demo
以上のコマンドを入力してリポジトリを作成しました。Windowsマシンからアクセスしているので、
LinkStationにはimportしたファイルしか置いてないです。。
L:はLinkStationで公開しているディスクをWindowsで見たときの ドライブレターということでよろしいか?
92 :
nobodyさん :2009/09/18(金) 19:25:55 ID:LN3EfzwI
ruby script/generate model Blog name:string user_id:integer generateスクリプトからマイグレーションファイルを作成する場合、カラムは型しか指定できないのですか? ググってみてもドキュメント読んでもこんな感じの例しかない。 カラムごとに{:null => false, :limit => 100}みたいなオプションが使えると便利なのに。
>>93 generatorのテンプレート見れば一発でわかるが、名前と型のみ。
scaffoldのビューで必要な情報しか引数に取るようになってない。
>>93 > カラムごとに{:null => false, :limit => 100}みたいなオプションが使えると便利
全然便利じゃないと思うぞそれ
回答ありがとうございます。
>>94 なるほど〜やっぱりダメなんですね。
>>95 便利じゃないですか?
generate実行した後に、いつもマイグレーションファイルを修正するってのはRailsの精神に反してる気がしますけど。
>>96 じゃあ仮にカラムが20〜30あると仮定して
想定されるコマンドラインを頑張って書いてみてくれw
generate文で指定するのが大変な時は省略してデフォルト値にすればいいだけじゃないですか? カラムが2〜3個しかないようなテーブルだってよくあることだし、そんな時はgenerate文で全部指定したくなる。 きめ細かく設定できるけど省略すればデフォルト値が用意されてるってのがRailsのスタイルだと思ってた。
そう思うなら直してpull requestでも投げとけ。
migrationを極力シンプルにして、バリデーションはモデルだけに書く派なので 今のジェネレータでとくに困ってないな
>>98 そんな generate が欲しいなら勝手に改造したら?
ただの rubyスクリプトだよ
で、すべての型の妥当なデフォルト値とやらを考えてみたらいいよ
型をデフォルトにするなんて誰も言ってないけど
確かに「誰も」言ってないw
「すべての型におけるオプションの妥当なデフォルト値」くらいか?
>>104 そう、そんな感じ。言い方が悪かった。
ruby script/generate model Book title(:string, null=>false, limit=>50) author(:string, limit=>50) description:string
これで
title・・・null不可、上限50文字
author・・・null可(デフォルト)、上限50文字
descriptionはnull可(デフォルト)、 上限255文字(デフォルト)
みたいに定義できたら便利だと思う。
generate文(笑) DSL じゃねえっつーの
>>105 シェルのメタキャラクタがむき出しなんですけど
個人的には
>>105 の考え方に同意。まぁ人によって感じ方は違うだろうけど。
↓こんな感じで、itemモデルのmy_text要素を編集画面で使ってるのですが <% form_for(@item) do |f| %> <%= f.text_area, :my_text %> <% end %> このmy_text要素の「<br/>」という文字列を改行(\n)に置換したいのですが、 どうしたらいいでしょうか…。 そのmy_text内に<br/>を保持させるなというのは、要件なので無理です。 ↓こう書き換えれば一応うごくのですが・・・もっとスマートにできるのかなぁと・・・ <%= f.text_area :my_text, {:value => f.object["my_text"].gsub("<br\/>", "\n") } %>
ヘルパーメソッドに変換用のメソッド作れば?
最初からHTMLを含まないテキストにしといて 表示するときにsimple_formatやauto_linkを使う手も。
理想は、データは本来の姿(HTML用に整形済みとかでない)で保持して 出力時に必要な処理をすることだけど、 > そのmy_text内に<br/>を保持させるなというのは、要件なので無理です。 「<br/>を保持させるなというのは、(保持するという)要件なので無理」 という意味か。
その要件自体無理なので実装不能で終了したら。
ここまでするくらいなら
>>111 で十分という。
class BrSanitizer < HTML::FullSanitizer
def process_node(node, result, options)
if node.class == HTML::Text
result << node.to_s
elsif node.class == HTML::Tag && node.name == 'br'
result << "¥n"
end
end
end
こんなサニタイザを作って、f.text_area_br2n とかいうメソッドの内部で
これを利用して整形する方法。
Railsでブログ(のようなもの)のプレビュー機能を実装したいのですが、足がかりのようなものはありませんでしょうか? CRUDの編集画面で、データの編集した中身を確定する「送信する」ボタンのほかに、 「プレビュー」ボタンがあるイメージです。 どのように実装したものか?と…。 例えば、form_forで指定した「送信する」の他の「プレビュー」用のURLに送る方法はどうしたものでしょうか? 環境は、Ruby 1.8.7 Rails 2.3.4です。
submitの値で場合分けするんじゃない? それとも、1つのフォームに複数のアクションを付けられるんだっけ?
ajaxとかどうでしょうか。 フォーム全部divで囲っておいて、プレビューボタンで表示 フォームはその時隠すようにする
120 :
117 :2009/09/25(金) 08:15:42 ID:???
>>118 なるほど…それなら、ボタン2つつけても、プレビュー用の表示ルーチンに持ってこられますね。
>>119 Redmineとか、MediaMarkerみたいなリアルタイムでポコッとプレビューが出現する感じでしょうか?
RailsでのAjaxはまだ全然やっていないので調べてみます。
form_for内のデータをそのまま渡せるのかなーとか疑問があったり・・・
ajaxならフォーム全体でも、一部でも問題なくpostできるけど
困っていることがあります。
論理削除プラグインのacts_as_paranoidと、階層構造を1つのformで保存したりするattribute_fu プラグイン
を導入しているのですが、
モデルHoge
acts_as_paranoid
has_many :foobars, :dependent => :destroy, :attributes => true
モデルFoobar
acts_as_paranoid
belongs_to :hoge
などとというように書いておくと、
Hogeをdestroyで消した時に、:dependent => :destroyにて関連付けたFoobar郡を同時に論理削除してくれるのですが、
中で freezeをかましているようでして、
:attributes => true をつけて attribute_fu の管理下においた状態だと、
Hogeをsave時に freezeされたfoobars を保存しようとして、
can't modify frozen hash
などとエラーがでます orz
こういう状況を回避する方法はないのでしょうか?
destroyのときだけ、:attributes => true をなくす、というか、
attribute_fuで base.class_eval されている中の
after_update :save_managed_associations
のフック処理(この中で該当のエラーが起きている)を回避する方法といいますか…。
acts_as_paranoidは下記のものを、
technoweenie's acts_as_paranoid at master - GitHub
http://github.com/technoweenie/acts_as_paranoid attribute_fuは下記のものを利用しています。
giraffesoft's attribute_fu at master - GitHub
http://github.com/giraffesoft/attribute_fu/tree
rails1.2向けに書かれた本で、勉強してるのですが インスコしたrailsが2.1.1ですた。エラーでて気づきました。 scaffoldの作法が変わってるんですね。 1.2なrailsをインストして、勉強したほうがいいですかね?
>>123 バージョンが違うと、また違うところでつまづくよ。
とりあえず、1.2のrailsをインストールして本を1冊終わらせる。
その後、最新のRailsでアプリを作っていくほうがいいと思う。
>>122 Railsの新しいの使ってんなら find のデフォルト値設定できたはずだから
1系用に苦し紛れに作られたような acts_as_paranoid はもう用無しじゃね?
と、適当にレスしてみる
ラジャ!
127 :
123 :2009/09/26(土) 00:17:09 ID:???
rails1.0向けだったわ・・ 新しい本買うかな・・・
>>127 1.0なのか・・・
たしか、2.3対応の本が出ていたと思うので、それを買うほうがいいかもね。
「Ruby on Rails 2」ではじめるWebアプリケーション開発
ってやつ。
中身はちゃんと見てないので、良い本かは分からないけど。
2006年の本だが……、arton氏の 「かんたんRuby on RailsでWebアプリケーション開発」 は、特定のバージョンのRailsを本に添付して、それに沿って 教えるという体裁だったな。 新しめのでも似たような本はあるかもしれない。
>>122 > destroyのときだけ、:attributes => true をなくす
ではないけれど、フリーズ状態でなければ実行というアプローチで、
alias_method_chain :save_managed_associations, :freeze_check
def save_managed_associations_with_freeze_check
save_managed_associations_without_freeze_check unless frozen?
end
とか出来ないかね
なっっげえええええええ
>>128 おいおい工学社のRails本を薦めるな。中身をちゃんと見てくれよ。
エラーが出たときだけproduction.logに出力させるのはどうすればいいのでしょうか? 今はすべてのアクセスが記録されてすぐ肥大してしまいます 一応毎日ログローテーションはしていますが、エラーだけ残せばサーバーリソースも節約できると考えました よろしくお願いします
134 :
nobodyさん :2009/09/27(日) 10:01:47 ID:u6jeeNBu
environments/production.rbの中でconfig.log_level = :warn
135 :
nobodyさん :2009/09/27(日) 14:40:48 ID:gn9S1exE
Apache + Passenger でRailsプロジェクトを自宅サーバで公開しようと思い、Passengerをインストールしてhttpd.confを設定したのですが、プロジェクトのページが表示されません。 どうすればよいでしょうか?質問が抽象的ですいません。
うん。抽象的すぎる。それで分かればエスパー。 Passengerのインストール後、「以下の設定をせよ」と出てくるもの だけでは設定終わらないよ。
>>135 抽象的になっちゃうけど、
Passengerのインストールかhttpd.confの設定が間違っているんだと思うんで
そこらへん見直すといいよ。
画像うpできるシステム作ってるんだけど、画像をバイナリでDBに持たすのと、 実ファイルとして保存するの、どっちがお好み?
業務アプリで、サーバを冗長化する予定があるなら悩む。 個人の趣味では面倒なのでファイルで持つ。アクセス制御とか出来るように、 DocumentRootには置かずに何らかのアクション経由で提供する。
ファイルがたくさん追加される可能性があるなら、 ディレクトリをわけるのを忘れずにね
>>141 ファイル名は一意になるのですが、ディレクトリ分けた方がいいんですかね?
一般に、ディレクトリってのは、内包するファイルの数が増えると パフォーマンスが落ちるのだよ。 ファイルデータのmd5sumの最初の2文字くらいで2層ディレクトリ を掘るのをよく見るね。
5万ファイルくらいtouchしてからlsしてみるとわかるよ。
text_field_tagやurl_forなどの初めからあるヘルパをちょっと拡張したい場合 どうやるのがいいのでしょうか。 module MobileFormHelper def self.included(klass) klass.class_eval do alias_method_chain :text_field_tag, :mobile end end def text_field_tag_with_mobile(name, value = nil, options = {}) options = options.dup mobile_format = options[:mobile_format] if mobile_format options[:istyle] = ... ... ... end text_field_tag_without_mobile(name, value, options) end end こんなかんじでやってんだがうまくできないすっすー
>>139 > DocumentRootには置かずに何らかのアクション経由で提供する。
これはつまり、public以下(例えば public/images/upload )には置かず、
upload/ など見えないところにファイルを置いて、
コントローラーで画像を読み込んで返すようにするってことでしょうか?
アクセス制限が使えるけど、Rails返すと重くならないものかな?
Rails 3.0が1.8.7よりも前のバージョンをサポートしないと明言した
150 :
nobodyさん :2009/10/02(金) 19:56:55 ID:khUy0zA7
1.8.6のHashはバグ持ちだからか
152 :
nobodyさん :2009/10/04(日) 00:57:03 ID:jQSUCkZW
1.9.1+Rails2.3.2でアプリを作ったのだが、 2.3.4にしたら動かなくなってしまった。2.3.3では問題なかったのだが。 US-ASCIIなんたらとか言ってるから文字コードか。 はよ3.0出ろよ。出たら作りかえるから。
ruby入門書を今日読み終えたおれに、最適なRoR入門書を教えてください。
156 :
nobodyさん :2009/10/04(日) 22:39:39 ID:ZAPGL++U
157 :
156 :2009/10/04(日) 22:42:24 ID:ZAPGL++U
量が多いため2つにわけました。実行結果は以下の通りです。 よろしくお願いします。 %setenv RB_USER_INSTALL true %gem18 install sqlite3-ruby Building native extensions. This could take a while... ERROR: Error installing sqlite3-ruby: ERROR: Failed to build gem native extension. /usr/local/bin/ruby18 extconf.rb install sqlite3-ruby checking for fdatasync() in -lrt... no checking for sqlite3.h... no *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: 〜オプションのため略しました。〜 Gem files will remain installed in /home/blueee/lib/ruby/gem/gems/sqlite3-ruby-1.2.5 for inspection. Results logged to /home/blueee/lib/ruby/gem/gems/sqlite3-ruby-1.2.5/ext/sqlite3_api/gem_make.out
sqlite3 のコンパイルに必要なヘッダとか、 あとsqlite3自体が入っていることを確認するべき。
159 :
156 :2009/10/05(月) 01:44:55 ID:tqFfwgsk
早速ありがとうございます。 確認したところsqlite3自体は入っています。 %sqlite3 --version 3.6.14.2 sqlite3.hやライブラリも入っているようです。 %ll /usr/local/include/sqlite3.h -rw-r--r-- 1 root wheel 254446 Jun 17 12:41 /usr/local/include/sqlite3.h %ll /usr/local/lib/libsqlite3.so lrwxr-xr-x 1 root wheel 15 Jun 17 12:41 /usr/local/lib/libsqlite3.so -> libsqlite3.so.8
じゃあ /usr/local がgem install時に使われない状態なんだろうね。 $ gem install sqlite3-ruby -- --with-sqlite3-dir=/usr/local かな。 --with-sqlite3-lib とか --with-sqlite3-include もあるらしい。
「省略した」とあるオプションの中に
>>160 で書いたやつあるはずなんだよね。
162 :
156 :2009/10/05(月) 03:26:41 ID:tqFfwgsk
言われた通りやってみたらできました。 ありがとうございます! %setenv RB_USER_INSTALL true %gem18 install sqlite3-ruby -- --with-sqlite3-dir=/usr/local Building native extensions. This could take a while... Successfully installed sqlite3-ruby-1.2.5 1 gem installed これってsqlite3のヘッダなどのパスがgemのデフォルトと違ってたってことなんですかね?
unix系でデフォルトなんて無いけどな。環境によって違うのが普通。 自分で鯖建てたりして、もうちょっと勉強したほうが。
prefixはデフォルトで探すようになってるはずなんだが。 つまりruby自身が/usr/localにインストールされてるなら/usr/localは見てるはず。
165 :
nobodyさん :2009/10/05(月) 15:58:08 ID:IPNAD5I/
Subversionを使ってコミット/チェックアウトする時にpublicフォルダのサブフォルダのいくつかを 更新しないようにしたいのですが、そのようなコマンドはあるでしょうか。
167 :
nobodyさん :2009/10/05(月) 19:49:34 ID:yk3Qebit
windowsで開発したアプリケーションをlinuxで運用したいんですが どうすれば良いでしょうか?
ウィンドウズで開発したアプリケーションをリナックススで運用したいという意味です
>>169 いや、確かに英単語がカタカナにはなっているけどさwww
クススって馬鹿にされてるみたいだ
RubyとRailsの実行環境さえ用意できればあとはwindowsとかわらんよ
Windowsで開発したRailsアプリケーションでもLinux用の特別なデプロイは 必要ないと考えてよろしいのでしょうか?
特別なデプロイってのが意味分からん 何が気になってるのか具体的に言ってよ
あ、すみません 簡単に言うとWindowsで書いたソースコードをLinuxのルートにコピーするだけで 動くんでしょうか?
環境言ってくれなきゃ何もアドバイスしようが無いんだってば Webサーバーは使うの?RubyとRailsのインストールと設定は終わってるの?DBは?
何度もすみません 開発環境はOSがWindowsVistaとXP。NetBeansを使おうと思っています。 実行環境はOSがUbuntu9.04。 開発実行環境ともRubyのバージョンは1.8.7、Railsは2.3.2です。 WebServerはApacheです。 DBはsqliteかMySQLどちらが良いか検討中です。
> Linuxのルートにコピーするだけ ってほど簡単ではないけど普通はそのままのコードで動くよ。 あなたの文章からにじみ出てくる理解度だと、LinuxでRails環境を 作った経験があるひとに初めの1回だけお願いすることをオススメするよ。
ありがとうございます。 残念ながらシュミグラマのため、周囲にプログラミング出来る人や Linuxに習熟した人は1人もおりません。 一応Ubuntu専用機および仮想マシン上でRails環境を自力で構築して Linux状でScaffoldしたテストプログラムが正常に動くことは確認しております。 (Railsのバージョンで手こずりましたが) が、指摘された件に関してはかなり不安があるのも事実なので 本格的な開発に入る前に質問させて貰いました。 まだたのしいRubyとRailsレシピを一回ずつ読んだ程度なので もう少し準備しようと思います。
自力でLinux上のRails環境を作れたなら時間をかけて 頑張れば何とかできるのではないでしょうか。 Windowsでつくったアプリケーションも普通は問題なく動きます。 気をつけるのは、 ・文字コードはUTF8 ・改行コードに気をつける ・ファイルシステムのディレクトリ区切り文字 ・ファイルのテキスト/バイナリモード ・その他Windows依存のこと ぐらいかなあ。 頑張ってください。
お節介だけど、サイト構築だけが目的の趣味プログラマならそれでいいけど プログラミングを勉強したいという趣味プログラマならLinux環境で開発することをお勧めする。
I think so
Poderosaおすすめ、Puttyもいいけど。
UTF-8 TeraTerm だろ JK Putty は、いろんな便利な機能があるけど、いまいちなじめない。
Linux環境で開発した方が結果的に時間も短くて済むよ
いやそれは無いわ emacs暦8年ぐらいだけどeclipse開発の方が効率は上だぜ
WindowsのRuby遅いからなぁ ちょっとした事も遅いから、Linuxの方が良いな
NetBeansで開発だからjrubyだよ ネイティブ版使うより安定した環境だと思う 使ったことないけど
ねっとびーんずって何?美味しそう
Windowsで開発なんて難易度高すぎる…
俺の想像ではあるが、10年後、20年後にはCUIでの開発ってレアな 存在になっていると思うぞ。
CUIコンパイラも新しくなるんだろうか?
ここって質問して良いのかな。 passengerをインストールしてとりあえずhttpd.confにLoadModuleとPassengerRoot とPassengerRuby書いてApache再起動したら(バーチャルホストは書いてない)、 Apacheがセグメンテーション違反で落ちるようになりました。 エラーログ見ると「PassengerRoot configuration option is not specified」と なっているのですがPassengerRootはコピペしただけ。何となくわざと間違った パス指定してみたら「passenger-spawn-serverがないよ!」ってエラーが出たん ですが、なぜ正しいパスだとエラーが違うのか…… あと気になったのは間違ったパス指定するとpassenger以下のlibにpassenger-spawn-server 探しに行ってるんですが、passenger-spawn-serverがあるのはbinの中だよ…… こんなんでハマった人、他にいますか? いちおう、rails2.3、passenger2.2.5。apacheは2.0.46です。
少なくとも設定が間違っているならプログラムがエラーを検出して 起動に失敗したりするはずで、それがセグメンテーション違反で落ち てしまうのは、プログラム自体のバグかモジュール作りで失敗しているか。
>インストール方法 了解。ってもごく普通に gem install passenger して passenger-install-apache-module しただけです。ちなみにwindowsじゃなくてlinux。red hat enterprise es 3だけどです。 今日は関係すると思われるファイル全部消して1からやり直したけど失敗。全力で諦めムードです。レスくれた人、dクス。
200 :
199 :2009/10/07(水) 11:14:38 ID:???
だけどです、ってなんだ。焦るな俺。
その手の実行時エラーでありがちなミスで、 ビルド時に使用したライブラリと、実行時に読み込むライブラリが異なる、ってのがあるけど、 その辺は確認したの?。lddとか、ld.conf関連変数をチェックするとか。 あるいは自分で関連ライブラリを変なとこに入れてない? /home とか /usr/local/hoge とかに。 で、ビルドに使ったユーザアカウントだけLD_LIBARY_PATHとかを設定して、 Apacheのプロセスにライブラリの場所を教えずに実行しようとしてるとか?
ld.confってなんだ。ld.so関連変数だ。焦るな俺
203 :
nobodyさん :2009/10/07(水) 17:53:45 ID:3DfRmTbM
自宅と職場で開発したいんですけどPCがwindowsで リモートとかはできない環境です。 C#はプロジェクトフォルダごとUSBメモリにコピーして 両方で使用してたんですが、Railsだとどうするのが簡単でしょうか?
まえにJRuby + JasperReport で帳票印刷できんかなぁ、とか言ってたモンだけど...
結果、まぁ出来そう。
ただCRailsのバックグランドでJRubyを動かす場合、JRubyにはforkがないんで、Backgroundrbは動かない。
JRuby対応のbackgroundrb代替品を探すか、自前のDRbサーバをrunnerで動かすかする。
kovyrin-loopsっていうのがgithubにあるけど、これはJrubyで普通に動く。
まぁ中身はシンプルってか大したことはしてないけど。
>>203 なんらかのSCMのリポジトリをUSBメモリに入れて持ち回せば?
passenger-spawn-server は自分で作らないとだめ 空のファイルで実行権限があればおk だった気がする
passenger-spawn-server を自分で作ったことなんて一度もねえよ
emacsでrubyとかrails補完できるものってないの? ruby-mode.elとかってインデントとか色を制御するだけだよね?
>>134 の
>environments/production.rbの中でconfig.log_level = :warn
をやったのですが、相変わらずすべてのログが記録されてました…
config/environment.rbにもconfig.log_level = :warn してみましたが変わりません
passenger使ってるのですが、関係ありますでしょうか?
webserver再起動した?
>>203 mac買え、ノートタイプでもいいから
最初からインストールされてて優秀なエディタTextMateもあるから初心者にとって超簡単。
補足。 ・(Railsが)最初からインストールされてて ・優秀なエディタTextMateも(シェアウェアで)ある
railsって10分でブログが作れるらしいね。 ということは相対的に考えて100万ぐらいの軽い案件は2〜3日で出来るわけか 1週間で1案件として月400万、年収5000万は堅いな 夢ひろがりんぐ!
>>215 おい、スルーしろ
単なる釣り針に引っかかるんじゃねYO
AWDwR3rdの邦訳はいつ出るのかな. 原著発売日にはすでに日本語への翻訳が始まってると 著者が書いてたけど,それ以降なにもわからんのです
3rd は初期 Rails 2 だから、今更出るのは問題あるからじゃないかな。
Railsやるのに英語避けられないから 両方の勉強のつもりで読んだら?
避けられる
221 :
nobodyさん :2009/10/10(土) 14:02:22 ID:k2nLAcqK
RESTfulの利点ってなんですか? アクションのみで遷移してほうが簡単だと思うのですが…
>>221 「リソースとそれに対するCRUD」という形でモノを考えることを
強制されることだと思っている。
223 :
221 :2009/10/10(土) 15:15:46 ID:k2nLAcqK
>>221 強制されることで生じるメリットはどのようなものがあるのですか?
RESTfulに作成されたアプリのイメージがわかないです。
scaffoldで作成されるほど単純なアプリってあまりないような気がします。
224 :
221 :2009/10/10(土) 15:16:52 ID:k2nLAcqK
アンカー間違えました。 222の方に対する質問でした。
個人でやってる範囲だけど… URL設計に何の制約もなければ、要望に対して一番素直と思える形 で機能を追加していってしまうことが出来て、アプリケーションが 老舗温泉旅館状態のカオスになるおそれがある。 RESTを意識すると、ある問題を、どんなリソースを用意して、どの HTTPメソッドを送る形に分類出来るか、事前に意識する必要が出て くるので、全体のURL構成が見渡し易くなる。 RESTが、というよりは、何かの型に自らはまることのメリットだな、こりゃ。
根拠は無いけどRESTは名前が浸透する前に廃れると思う
浸透してるからRailsで採用されたんじゃなくて?
浸透させたくなったDHHがRailsに採用したという感じではないかな。
RESTが浸透してないとか言ってるやつは、WebAPIでなんか作ってみれば?
なんちゃってRESTも多いからなー。
最近の技術はほとんど名前の後付けに過ぎないからな
ajax cloud
型に自らはまっておくと、 link_to("詳細", record) だけで詳細へのリンクになるのが便利
234 :
nobodyさん :2009/10/12(月) 11:26:41 ID:w/VULtBT
RESTfulに書くときってコントローラとモデルが1対1になる感じですよね?
マク使うとか馬鹿過ぎw どうせ鯖はリナックスなんだから、PC買ったほうがいいよ。
237 :
nobodyさん :2009/10/12(月) 19:21:15 ID:PIBBLJL/
has_many関係にある2つのモデルに対して情報を登録するフォームにおいて、 error_messages_forでエラーを表示すると、2つのモデルのエラーがまとめて表示されてしまいます。 一方のモデルのエラーだけを表示するような方法はあるのでしょうか?
エラーを伏せたいほうのオブジェクトの #errors.clear でどう?
239 :
nobodyさん :2009/10/16(金) 05:53:31 ID:tsHntjAe
rubyスレで間違えて質問してしまいました。本家で質問です。 mysqlのデータを単純にcontrollerでfindで取り出してviewで表示させようとしています。 しかしブラウザでの表示が文字化けならいざ知れず、「#」になってしまいます。 具体的にページのソースを見てみると、その部分は、 #<Book:0x24319ec> となっています(Bookテーブルのものを取り出して表示しようとしています)。 文法はコントローラで@book = Book.find(params[:id])とし、 ビューで <%=h @book.title %> という風にしているので合ってるのではないかと思っています。 (ビューでp してみたところ、ターミナルには [#<Book id: 1, title: "hoge">] となっているので、 途中までは正常に取り出せているようなのですが、ブラウザ表示のところでこうなってしまって大変悩んでいます。 macosxでMAMPを入れ、いざ開発をしようと決めたところでこのエラーです。 railsのバージョンは2.3.4です。 誰か解決策をご存知の方ご教授おねがいします。よろしくお願いします。
mysqlの文字コード設定がsjisとか?
>>239 controllerのクラス名か、ファイル名がおかしいんじゃね?
p の結果が配列に見えるんだが。
githubとかで手軽にソース公開できるようになればこんな問題も即解決
>>239 ソース上 #<Book:0x24319ec> となっているなら、
<%= @book %> と書いてしまっているはずなんだが。
245 :
239 :2009/10/16(金) 13:05:10 ID:tsHntjAe
>>240-244 ありがとうございます。
文字コードはutf-8になっています。クラス名も全部チェックしました。
ちなみに今朝、テーブル名を変えてみたらうまくいきました。
テーブル名を戻してみるとできません。いまだ謎です。
とりあえず解決はしたので、良かったです。みなさんありがとうございました。
すいません、↑はテーブル名ではなく、カラム名です。
単純な名前にして予約名とかぶってたんだろ
<%= debug @book %> も地味に役に立つことがあるよね。
>>247 実際は挙げた例とは違い、最初はカラムも変数もnameでしてたのですが、ほかに変えるといけました。
昔はnameでいけた気がするのですが。。。わかりません。
昔はmysqlだったが、いまはsqlightがデフォルトで、その違いのせいとか?
つーか、エラーが起きたんなら別の例に置き換えずに そのまま上げてくれや…
>>250 いちよう
% rails sample10 -d mysql
でプロジェクトを作ったので大丈夫だと思うのですが。ありがとうございます。
>>251 おっしゃる通りです....rubyスレの方で質問させていただいたもので答えていただいたときに、
titleカラムで指摘していただいたので、具体的にそのまま上げてしまいました。
まさかそこは関係ないだろうと思っていたので。浅はかでした。混乱させてすいません。
いちよう
マカってホント情報弱者だなw
いちょう
ひぐち
J^ω^し
カッター
259 :
nobodyさん :2009/10/19(月) 22:30:30 ID:BV3oZVvu
Railsでファイルをアップロードして取り込む方法は分かるのですが、URLからWeb上のファイルをダウンロードするようなコードはどう書けばいいですか?
>>259 ダウンロードさせるのがRailsアプリで
ダウンロードするのがブラウザ?
ActionController::Base#send_data
ActionController::Base#send_file
261 :
nobodyさん :2009/10/19(月) 23:19:48 ID:BV3oZVvu
>>260 はい。ブラウザからアクセスして、Railsアプリに保存させます。
send_data, send_file試してみます。有難うございました。
URLって画像の直リンか?
それとも画像サイトのurlを指定して画像をrailsで保存したいのか?
264 :
nobodyさん :2009/10/20(火) 02:07:36 ID:E10g0f4b
まず直接リンクから取り込もうと考えています。いずれはサイトのurlを指定して取り込みたいですが、 こちらは何だか難しそうな気がするんですよね。。
public以下、もしくはapacheがよきにはからってくれる場所にファイル を配置して構わないなら(アクセス制御とかいらないなら)、単にファイル を置くだけでRails側では何もしなくていいよ。
open-uriじゃないの
え、アプリがどこかのサイトからhttp getするの?
268 :
nobodyさん :2009/10/20(火) 10:15:42 ID:E10g0f4b
例えばurlをフォームにコピペしてダウンロードボタンをクリックすると、 画像なりpdfファイルがパソコンに保存される、というWebアプリを想定しています。
既出だけど、そういうアプリなら、整理すれば 指定されたURLからダウンロード => open-uriライブラリ ブラウザに結果を返す => send_dataメソッド となる。
素直にリダイレクトするだけのほうが簡単の様な。
271 :
nobodyさん :2009/10/21(水) 10:16:15 ID:YXYYyrvA
urlからファイルを保存する時はダイアログを出現させずに、 保存先のフォルダも手動で指定せずに自動でやってほしいなと思いまして。
それはブラウザ依存だし、Rails関係ない
OSXだけの話題ですみません。昨日、Snow Leopardを入れたら、Railsがこけました。 ググると当然のように情報があったので、その通りやってみたのですが、MysqlもSqliteも 動きません。やっぱり、上書きインストールは止めとけばよかったかな。(しかもTigerから) クリーンインストールしてみて、また報告したいと思います。
>273 ただの愚痴ならはてなにでも書けばいいのに。
sproutcoreってどうよ
なにそれ? とりあえずググるのめんどくさいから解説しれ
マカってホント情報弱者だなw マクってアンインストールも無いポンコツOSだから大変だwww
ごみ箱に捨てるとアンインストールだよ ^ ^
279 :
nobodyさん :2009/10/22(木) 10:21:14 ID:KXOXFRLn
open-uriについて回答有難うございました。試しにRubyでスクリプトを書いてみたのですが、どうも上手くいきません。
require 'open-uri'
open ("
http://www.fusokk.co.jp/ir/2009/010.pdf ") {|io|
open("fuso_blance_sheet.pdf", "w") {|f|
f.write(io.read)
}
}
上記のコードを実行すると真っ白なpdfファイルが作成されます。また、pdfファイルを画像ファイルに変更しても破損した画像ファイルが作成されます。
open-uriでアクセスしたファイルの正しい保存の仕方(作成の仕方?)を教えて頂けないでしょうか。よろしくお願いします。
>>279 Mac(UNIX)で普通に出来たけど、windowsだとバイナリモードとか
意識する必要があるかも。
281 :
nobodyさん :2009/10/22(木) 11:01:09 ID:KXOXFRLn
>>280 バイナリモードでいけました。有難うございます!
基礎知識足りなすぎだろ、 こうゆうのを砂上の楼閣・・・・
283 :
nobodyさん :2009/10/22(木) 12:16:08 ID:LmLblO9Z
>>281 Railsやる前にRubyの入門書を一通り読んだ方がよい気がする
C言語やれ!
アセンブラ学べ
まじでアドバイスするとC#あたりがいい どうしてもRubyでやりたいってことならそれもありだと思うが ただどの言語やるにしても基本くらい勉強しろ
まあrubyの基礎を一通り遣ればいいだけ。いきなりRoRじゃなあ。
railsの本はrubyの事はさっと基本的なことは書いてあっても それなりに使うには言語自体覚えてこなきゃな
正直C#の方が素直で憶えやすいと思う
自分の勝手なイメージかもしれんけど 多言語でバリバリ書いてる人が その知識をもとにすいすい書くのがRubyだと思う
ミス ×多言語○他言語
むしろ、プログラミング初心者とか初学者の方が Rubyの変態仕様はなじみやすいと思う C系やってたやつがVBのコード見たら発狂するのと同じ
Rubyが変態とかwww 一番素直な言語だと思うんだが
柔軟すぎて気持ち悪いって言う人がいるのはまあわかる
VBでなぜ発狂するのかわからん。普通にわかるし Perlあたりでみかけるすばらしく圧縮されたコードならわかるが
変数のほうに型がないと不安なんじゃない?
CとRubyの基礎的な本は読んだのですが、読み落としがあったり忘れたりしてしまうんですよね。 そこでRailsでアプリを作ればプログラミングも覚えていけると思いました。 Webアプリ以外だとどういうものを作るか思いつかなくて、CやC++は勉強が進んでいないです。。
マインスイーパ 次にソリティア
>297 100マス計算 計算100 (脳トレに入ってるアレ) じゃんけんゲーム 数独問題生成 数独を解く 上三つが簡単。
英語読んだだけで覚えないだろ?使えないし、しゃべれないし どんどん使って行かなきゃ名
人気のあるサンプルプログラム 1. String#* / 同じ文字列を複数並べて表示する。 47pt | 2008-08-23 (;^ω^)
レベル低すぎてワラタ
フォームから取得した値をコントローラで受けとって、何もせず再度表示させたいと思い以下のコードを書きましたが、何も表示されません。 ビューのコード <% form_tag :action => 'name' do -%> <p>NAME <%= text_field_tag "t_field" %><br/><br/> <%= submit_tag "作成" %> <% end -%> <%= @name %></p> コントローラのコード def name @name = params[:t_field] redirect_to :action => 'list' end :action => 'list' のlistは、scaffoldで作成されるlistです。 テキストフィールドの値を受け取るコントローラのコードが間違っているのでしょうか、 それとも<%= @name %>としただけのビューのコードが間違っているのでしょうか? どなたか教えて頂けないでしょうか。よろしくお願いします。
ruby script/server -u でデバックモードで起動してくれるからログ見ろ
HTML間違ってる訳だが
リダイレクトしたらフォームの値は消えるだろ。 GETでパラメータ渡すか、セッション使わない限り。 ビューといっているのが、list.html.erb(またはlist.rhtml)なのであれば、 render :action => :list で動くだろう。 もし、違うファイル名(例えば、name.html.erbとか)だったらそれを指定する必要がある。
309 :
273 :2009/10/24(土) 20:56:08 ID:???
ただの愚痴とか情報弱者とかご指摘をいただきました
>>273 でございます。
Snow Leopardのクリーンインストールをしたところ、問題なく動く
ようになりましたので、ご報告させていただきます。
あちこちに書かれている通り、Mysqlの64ビット版をインストール、
mysql gemを-arch x86_64フラグ付きインストールでうまくいきました。
やっぱり、OSのアップグレードのような作業で手間を惜しむと後でよけいに苦労
することが多いのは世の常ですね。
gem入れ直すだけで十分だったのに
>>308 パラメータ消えるんですね。知らなかったです。
リダイレクトとレンダーの違いがよく分かってなかったです。
回答有難うございました。
マカってホント情報弱者だなw
既存DBがあって、それを利用してwebアプリをつくりたいのですが、 テーブル命名規則がRubyonRailsに完全に沿ってない。(idがauto_incrementとかは沿っている) テーブル自体の命名規則はmodelsにset_table_nameで入れればエイリアスだと 認識してくれるので問題ないわけですが、 問題はカラムorz リレーションを張ってあるカラム名が適当なため、 カラム名にエイリアスを乗っけたいのですが方法はありますかね? hogeテーブル fugaテーブル ------------- ---------------- id id title h_id ←これが「hoge_id」であってほしかった created_at contents updated_at created_at updated_at 既存TBLが「h_id」で、railsの命名規則だと「hoge_id」でなきゃいけないのだけれどもカラム名の変更はできないという… できそうなんだけどググっても不明ですどなたか教えて頂けませんか
:foreign_key
316 :
313 :2009/10/27(火) 19:15:30 ID:???
>>314 >>315 おおおうああできました!
ありがとうございます。
そうか、foreign_key でカラムに固有名をつけてあげればいい、ということなんですね。
すっかり凝り固まっていて思い至りませんでした。ありがとうございました!
317 :
313 :2009/10/27(火) 19:21:50 ID:???
あああちがう、foreign_keyで外部キー名を指定してあげる、ですね 理解が浅くて申し訳ないです
318 :
nobodyさん :2009/10/28(水) 14:26:55 ID:/NsMtcRB
>>317 そのDBを、新しく作るrailsアプリからしか使わないんだったらマイグレーションでDBの定義変えちゃった方がいいと思うけれど。
foreign_key使うより個人的にはそっちの方がrailsのやり方に沿ってて好き。というかカラムの名前がrailsの命名規則に従ってないのって気持ち悪くない?まぁ人それぞれだと思うけど。
そんなこと出来る環境なら誰だってそうするだろ。 既存DB弄れないのはよくあること。
320 :
318 :2009/10/28(水) 17:48:49 ID:/NsMtcRB
>>そんなこと出来る環境なら誰だってそうするだろ。 >>既存DB弄れないのはよくあること。 まぁだからもちろん、「そのDBを、新しく作るrailsアプリからしか使わないんだったら」なのだけれど。 313が業務じゃなくて個人的に色々作ってる人のような気がしたので、 だったらDBの定義変更もできるんじゃないかなと思って。なんとなく。
質問よろしいでしょうか? うまくいきません、どうやったらよいものでしょうか?
よいよい詳しく申してみなさい
すいません、質問の中身書き忘れました・・・ form_forとsubmitで、同じフォームのデータに「送信」ボタンと「送信とプレビュー」ボタンの2つをつけたいと思っています。 「送信」ボタンでは、/hage に送信し、 「送信とプレビュー」では /hage/preview に送信し別窓で開きたいと考えています。 どのように実現するのが早いでしょうか? JavaScriptを絡めないと無理なものでしょうか?
>>323 submitを一つのformに複数置く場合、アプリではsubmitを名前で
区別して動作を変えることができる。
結果表示の方だが、確か、formにも target="_blank" を指定できたと
思う。ただし、今回は、一つのformの複数のsubmitという条件なので、
片方のときだけ、実際にサーバにデータを送る寸前にtargetをすり替える
ようなJavaScriptを用意する必要があると思う。
>>324 サンクス
そっか、submitの名前で区別して別の処理すればいいか
target="_blank"相当のボタン押下時の埋め込みですが、JavaScript試してみます。
というか、ちょっと試してみて、上手く言ってないので、JavaScript関連スレでお聞きしたいと思います。
ありがとうございました
326 :
313 :2009/10/29(木) 11:06:29 ID:???
>>318 >>319 提案とお気遣いありがとうございます。
使用しているDBは別のフレームワークで利用しているもので、
それにRailsで拡張アプリみたいにしてみたかったのでカラムの変更なしが前提でした。
でも本来ならばRails方式に変更した方がいいし、別フレームワークでもRailsと同じ方式でカラム命名ができるので、
Rails側アプリが巨大化する前に手をうとうと思います。
Railsの生産性の高さに元アプリから作り直しそうな勢いですw
3.0って1.9.2が出たあとか?来年の4月に洋書で本が出るようだが 2系で作って大幅改修が嫌だから待ってるのだが遅すぎるわ
ぶっちゃけその3はRails3じゃなくて、本自身の第3版じゃないか?
失礼、英語の本のほうはRails 3か。
ActeveRecordでupdate_atだけ更新する方法を教えてください
>>332 railsのバージョンによって回答数が異なります。
バージョンは何?
Railsのプロジェクトをチェックアウトして更新したのですが、追加したページにアクセス出来ません。 The page you were looking for doesn't exist. You may have mistyped the address or the page may have moved. というページが表示されます。Apacheを再起動してみましたが、表示されないままでした。 以前からあったページにはアクセスできますし、Mongrelを立ち上げてローカルからはアクセス出来ます。 production.logを確認してみましたが、何も書かれていませんでした。 環境はFedora10 + Apahe + passengerです。 どなたか解決方法を教えて頂けないでしょうか。 よろしくお願いします。
>>335 そのエラーてどこのレベルでててるんだろ。
真ん中に赤枠があって、その中にエラー文字列があるなら、Railsがエラーはいているだろうけど
apacheのログ確認してみた?
"GET/financial_statenents HTTP/1.1" 404 ログの見方はよく分からないのですが、Railsで用意された404が表示されているみたいです。
追加したってのは、Rails.root 直下の public の下にHTMLファイルを 追加したってこと? Railsの機能を追加したってこと?
新しいコントローラのクラスと、それに対応するビュー、モデル、データベーステーブルを追加しました。
とりあえず、apacheではなくRailsプログラムの問題のようなので、 developmentモードで動かしてみる →Passengerの設定にRailsEnvというのがある。 または、 productionモードのまま、ログレベルを:debugに変更 →config/environments/production.rbを弄る。 などでより詳しい情報を得ることを勧める。
何度も申し訳ないのですが、Passengerの設定ファイルってどこにあるのでしょうか?
PassengerでRailsEnv指定できました。 Routing Error no route found to match "/financial_statements" with{:method=>:get} という表示に変わりました。routes.rbに何か設定を追加すればよいのでしょうか?
いいかげんにしろ
/financial_satementesというURLでRailsになんらかのアクションを してほしいなら、あなたが追加したコントローラとそいつのメソッド がそのURLにマッピングされなければならない。 rake routes してみるとおそらく /financial_statements に反応する ルールがないはず。 routes.rbに map.resources :financial_statements とでも書けばいいんじゃない?
回答有り難うございます。 map.resources :financial_statementes は上手くいきませんでした。 同じようなURL(/controllername)はマッピング出来ているのに/financial_statementsはエラーになる理由がよく分からないです。。
まー、あとは routes.rb の問題ぽいからドキュメントみつつ rake routes しつつ、試行錯誤してくれい。
おまたせしました 質問です RoRはWindows7で動作しますか?
動かないと思います
Ruby on Rails解説書の定番"Agile Web Development with Rails"の 日本語最新版『RailsによるアジャイルWebアプリケーション開発 第3版』が、 この2009年11月末にオーム社より発行されます。 ついにでるー.
Head first railsもRails2.3対応で同時期に出るらしいんだけど, どっちがいいかな
以下のようなプログラムを作成し、実行しています。 strSQL="select count(*) as cnt ,fk_table_id from datas where del_flg=0 group by id order by count(*)" hoge=Data.find_by_sql(strSQL) -------- <table> <%for i in (0..hoge.length-1) %> <tr><td><%=hoge[i].fk_table_id%></td><td><%=hoge.cnt%></td></tr> <%end %> </table> ----------------- ですが、ときどき undefined method `fk_table_id` というエラーがエラーログに出ています。 何か対処方法はないでしょうか? sqlは一例で、日によって発生場所がまちまちになっています。 環境 os centos ruby 1.8.7 p-174 rails 2.1.2 mysql tritonn-1.0.12-mysql-5.0.67 クエリキャッシュを有効にしていたのですが エラーの出現回数があまりに多いので 毎回クリアさせてみたところ多少減りました。
そのタイミングでrails3が来たら全員涙目w
一度出たら2年くらい出ないから、3系を待ってくれた方がよかったかも 正直2.3系はあまり困ってない
質問させてください。 /lib/xxx.rbのモジュールをControllerでincludeして利用しています。 BackgrounDRb(/lib/workers/yyy_worker.rb)でも xxx.rbのモジュールをincludeして利用したいのですがどうすればいいでしょうか?
356 :
nobodyさん :2009/11/07(土) 00:52:56 ID:ygEaPrn0
Rails勉強中なのですが、DBのリレーションのところでつまずいてます。 目的:下記条件下で、new.html.erbから名字と子供のnameを登録したい。 テーブル Parent id: myoji: Child id: parent_id: name: という二つのテーブルがあり それぞれのモデルには、 has_one :child belongs_to :parent を指定しています。
357 :
nobodyさん :2009/11/07(土) 00:54:17 ID:ygEaPrn0
上の続きです。 コントローラーには、 main.rb def new @user = Parent.new end def create @user = Parent.new(params[:data]) @user.save end Viewのnew.html.erbには <% form_for :parent,@user,:url=>{:action=>'create',:id=>@user} do |form|%> 名字:<%= form.text_field :myoji %> 名前:<%= form.text_field :name %> <%submit_tag '登録'%> <%end%> とします。 間違っているところを具体的ご指摘いただけないでしょうか。 rails rubyなどは最新バージョンです。
358 :
nobodyさん :2009/11/07(土) 01:01:03 ID:ygEaPrn0
すみません。 @user = Parent.new(params[:data]) ではなく、 @user = Parent.new(params[:user]) だと思うのですが、、、まちがってますよね。。。
自分でも何が分かってないのか分かってないんだろ。 なんかよく分からないけどヒントください、みたいな。
361 :
nobodyさん :2009/11/07(土) 02:36:32 ID:ygEaPrn0
いえ、違う人です。 いろいろ変えてやってみたのですがいろいろなエラーで 収集がつかなくなったので、根本的に、基本的なところで どう間違っているのか、指摘してもらえればありがたいなーと 思いまして。。(^^;;
そのコントローラーに対してどういうアクセスをしたのか、 その結果どういうエラーが出たのか、 具体的に示さないとあかの他人がアドバイス出来るはずないでしょ。
何もしてないならコントローラの名前がmain.rbって時点で変。
ずーっと使っているとメモリの消費量がすごいことになるんだけど どうしたらいいの? いったん再起動するの?
365 :
nobodyさん :2009/11/07(土) 09:14:59 ID:iBTE7BNg
自分の場合、monitなどの監視ツールでメモリの使用量が一定量を超えたら自動で再起動させてる
freeしても使用メモリはOSが実際に必要とするまで返還されなかったり するからとりあえずOSとかいろいろ教えれ。
>>364 放っておくと死ぬから頻繁に再起動するしかないw
368 :
nobodyさん :2009/11/07(土) 09:53:27 ID:iBTE7BNg
Passengerの場合は、5分間アクセスがなければプロセスを終了させるとか、1000回アクセスを処理したら終了などの設定ができるので、特にツールを使わなくても再起動できるのでおすすめ。
rubyってガベコレしてないの?
してるけど、Conservative GCなのでどうがんばっても回収漏れは発生する。
>>366 ubuntu 8.04をxp上のvmware playerで動かしてる
メモリの割り当ては512M
monitなどで再起動か
なるほろ
GCはOSからもらっているメモリで再利用していいはずの 箇所を実際に再利用できるようにすることなので、 OSにメモリを返すという意味ではない。
じゃあ再起動しなくていいはずなのに どうして再起動しないと固まるんだろうw
GC以外のところに原因があるからという風に読めるな
railsお勧めのレン鯖って存在しますか?
メモリリークしまくるのはオブジェクト指向言語の伝統だし。
ちょいと質問があります。 modelに書く処理をmoduleにまとめておきたいのですが、うまく行きません。 module内にnamedscopeの定義をまとめて書いたのですが、 undefined method `named_scope' for ModelSupport:Module などといわれてしまいます。 現在は例として以下のような感じで記述しています(名前は例なのでつっこまないで) item.rb(Itemモデル)に class Item < ActiveRecord::Base include ModelSupport end lib/model_support.rbに、 module ModelSupport named_scope :new_post, lambda{|num| {:limit => num}} end うまく、module化するにはどのように書いたものでしょうか?
>>375 定評あるのはslicehostかな?
最近なら、Rackspaceとか
>>375 ちょっと試したいだけなら heroku の無料プラン。
>>377 その書き方の場合、named_scope は module ModelSupport のスコープで実行される。
実行されるというのはメソッドが呼ばれるという意味ね。
例)
module Hoge
puts "hoge"
end
#=> hoge
単なるモジュールな ModelSupport は named_scope を知らないので undefined method になる。
で、どうすればいいかというとリフレクションを使う。
module ModelSupport
def self.included(base)
base.class_eval do
named_scope :new_post, lambda{|num| {:limit => num}}
end
end
end
module が include されたときに included が呼ばれるので、
class_eval を使って base(=includeしたクラス)のコンテキストで name_scope を呼ぶ。
380 :
377 :2009/11/07(土) 17:12:43 ID:???
>>379 うほっ!できました、できました!
他のRailsプラグインとかもそういうような書き方しててナンダコレ?とか思ってました。
スコープ考慮しないといけないんですね。
これ、慣用句的な書き方みたいですね。
今までmoduleの中身はincludeした方のスコープで動くもんだと思ってたw そういうことだったのか
>>373 >>じゃあ再起動しなくていいはず
逆。OSには返してないわけだから、基本的にOSから見た
プロセスが食うメモリってのは増える一方。
freeしてもOSにメモリを返却するってわけじゃないんだよな。 プロセスのメモリサイズをいじるのはsbrkとかbrkだっけ?
>>379 自分には関係ないけど
なるほどーと思った
>>379 宣言的に見えるけど、実のところnamed_scopeもただの
メソッドだからな。
qmailで受信して、.qmailのパイプ経由で script/runnerしてメール処理をしてるのだが、 一度受信したメールが何度も繰り返し送られてくる。 これって、こういうものなのかな? それとも的確な処理をしてないから?
受信したら消せよ
うそん
外部から何度も送られてくるのよ。 受信したメールをコマンドで処理するのみで 保存しないようにしても症状は同じ。 受信したときに相手のサーバに的確なメッセージを 返してあげないとダメなのかな? そういうのはqmailが勝手にやってくれてると思うのだけど…
>>388 > そういうのはqmailが勝手にやってくれてると思うのだけど…
おいおい
これがruby厨
そんなくれくれruby厨に助言してくれよう。 終了コード0返すだけじゃだめなの?
ActiveRecord::Migration.execute('CREATE TABLE hoge (・・・); CREATE INDEX ・・・;') とかしてもインデックス作られないんだけどCREATE TABLEだけしか実行してくれないの?
そんな事はない。 インデックスも正しく作成される。 その前にマイグレーションを使っているのに、わざわざSQLを直接実行するのはなんでだ?
Railsではidを渡すところに大概は、Hoge.find(id) した後のオブジェクトを渡しても 自動でidに変換してよしなに計らってくれますよね? 例えば、Hoge.find自身もintegerなidじゃない Hoge.firstの返り値などでも通ります。 これを自分の処理でも使いたいのですが、該当するメソッドはないものでしょうか? ActiveRecordのfindのソースとかたどって見ているのですが、 いまいちわからんとです・・・ 環境はRuby 1.8.7、Rails 2.3.4です。
>>394 まずは active_record/base.rb の AR::Base#find から find_one / find_some などを経て
def quote_value(value, column = nil)
self.class.connection.quote(value, column)
end
これは、active_record/connection_adapters/abstract/quoting.rb の
def quote(value, column = nil)
# records are quoted as their primary key
return value.quoted_id if value.respond_to?(:quoted_id)
:
かな。
で、AR::Base に戻って
def quoted_id #:nodoc:
quote_value(id, column_for_attribute(self.class.primary_key))
end
んなもんソース見るまでもなくね?
見ないでどうやってしらべんの
んなもん調べるまでもなくね
初心者スレか本スレに帰れ
>>395 無事動作を確認できました!
Item.quote_value(1234) => "1234"
Item..quote_value(Item.first) => "1"
みたいにいけますた。何故か文字列ですがw
find_oneやfind_someになんであるのに、見つけられなかったんだろ、と
ドキュメントを思ってよく見たら
railsのchmファイルって、メソッドのソース表示は長い行だと折り返されないで、
画面外にでてって表示されないっぽいですね orz
他の場面でもソース見ててハマりそうだ・・・。
この辺てCSSとか直したらなんとかなるんかな。
「SQL文の条件句に埋め込む数値の表現」なので、 最終的に文字列が得られるようになってるのよ。
>>401 ああ、確かにドキュメントに
> Quote strings appropriately for SQL statements
と書いてありますね。
quote_〜〜ってメソッドたくさんあるし、なんのことかと思ったら、
SQLのためのクォート処理なんですね。
勉強になりました。
privateメソッドですし、期待する機能と名前が一致しない点もアレなのですが、
とりあえずは実現できるので ActiveRecord::Base::quote_value を使ってみます。
帰り値の文字列はto_iすればいいですし。
ありがとうございました。
質問よいですか? URLに&hoge=true といったように、フラグや状態(日付とかでもいいです)を記載して、 しばらく、一定のページ遷移まで、&hoge=trueのGETパラメータを付加しつづけるよい方法はありませんでしょうか? クッキーがいいかと思ったのですが、状態の違うページをいくつか開いた際に破綻してしまいます。 今は、form_forなどの引数にパラーメータを一個一個渡しています。 手動なのでけっこうミスがでてしまいます。 以下のような感じです。 view側: <% form_tag({:action => :edit, :id => @item}.merge(hoge_params_hash)) do %> : <% end %> コントローラー側: helper_method hoge_params_hash private def hoge_params_hash params[:hoge] ? {:hoge=> params[:hoge]} : {} end 例として、ブログやCMSのプレビュー用のモードというか、プレビューボタンを押した後指定のページ遷移までは フラグ立てたまま処理する(「プレビュー中です」のような表示をしたい)というような場合や 食べた食品を記録するサイトで、ある日に記録するデータを検索窓から検索した場合、 その検索後のページ場合もそのある日を覚えておいて、記録時に使いたいといった場合です。 設計の問題なのかもしれませんが、ぜひご助言ください。
formならhiddenでいいんじゃね?
セッションに保存するのが駄目な理由が分からん。 application_controllerにチェックするメソッド定義して、各コントローラでfilterで呼ぶとか。 filterを工夫すればいいんじゃないの?
>>403 例えば、link_toの場合は、こんな感じで書くとGETパラメータを付加してくれる。
formでも同じ事ができるかは分からないが。
<%= link_to("編集", :action => :edit, :id => @item, :params => params) %>
407 :
403 :2009/11/11(水) 09:59:21 ID:???
>>405 そういうことが聞きたいのです。
セッションだと、
>>403 の下のブログやCMSの例でいえば、プレビューと実際の画面表示のコードを共有していた場合、
プレビュー中に、実際の画面みようとしてもプレビュー表示になってしまいますよね。
食品の記録サイトでいえば、別のタブで同時に別の日を入力しようとしていた場合、
セッションにある値しかつかわれないので、セッションにある日しか同時に入力できないことになります
つまり、セッションだと状態を1つしかもてない、という意味なのですが・・・
ま、仕様です、と言えば、それでもいいのかもしれませんがw
>>406 あ、いえ、今もそんな感じでやってるんです。
>>403 のコード例がわかりにくいのですが、
form_tag でGETパラメータを指定しています。
ただし、指定するかは今のページのGETパラーメータを見てから。
>>404 確かにformならhiddenでもいいですね。GETパラメータでやらなくてもいいか
408 :
nobodyさん :2009/11/12(木) 03:49:23 ID:K53v7ACD
ファイルをアップロードするときってform_tagとかfile_fieldを つかってファイルを選ぶ方法しかないのでしょうか? クライアントがパスを書いてそこにあるファイルをサーバに保存する ことは不可能ですか?
可能
/etc/passwdとか上書き出来たら楽しいね。
当たり前のような質問があります。 HogeControllerがあり、publicなメソッドとしてFoobarを新たに追加しました。 デフォルトのルーティングだと、 /hoge/foobar でアクセスできるのですが、プログラム上からは foobar_hoge_path() が使えません。 rake routesしても載ってないのですが、 これって、routes.rbに map.resources :hoge, :member => { :foobar => :get } などとかかなくてはいけないものなのでしょうか?
find_by_sqlで複数のSQLを実行したとき 返ってきた結果セットがほぼ同時に別プロセスで 実行していた別なSQLのものに変わってしまっています。 mysqlの設定などでチェックすべきところとかないでしょうか?
>>411 無指定の map.resources だけだとそこまで面倒みてくれない。
map.resources に追加するか、昔ながらのやり方で
map.foobar_hoge 'hoge/foobar', :controller => 'hoge', :action => 'foobar'
のように定義してやるとか。
トランザクションとかストアドプロシージャだろうか やったことないけど
415 :
411 :2009/11/14(土) 04:27:35 ID:???
>>413 ありがとうございます。
こちらでも試してみましたが、やはり、必要なのですね。
>>411 のは間違ってまして、/hoge/foobarの場合は、
map.resources :hoge, :collection => { :foobar => :get }
でした。
/hoge/1/foobarなら、
>>411 のでいいみたいです。
ちょっと聞いていいでしょうか?
psousa's baseapp-orange at master - GitHub
http://github.com/psousa/baseapp-orange 以前でてたBaseAppというRailsのテンプレみたいなのの派生verがあるのを発見して
動かしてみようと思ったんですが、うまく行きません。
READMEにあるように、mysql用のdb設定をdatabase.ymlにして、
rake db:migrate
したのですが、
Missing these required gems:
capistrano-ext
と言われてしまいます。
vendor以下を見るとfreezeされているのか、必要なgemなど全部入っているようなのですが、このように言われます。
config/enviroment.rb には、
config.gem "capistrano-ext", :lib => "capistrano"
のような記述があり、
rake gems:install
とするのですが、何ごともなく終了します。
どうしたものでしょうか?
417 :
416 :2009/11/17(火) 14:16:18 ID:???
>>416 ですが、
ないならgemいれればいいんじゃね?という当たり前の結論で、
gem install capistrano-ext
したら、無事に通りました。(db:migrateでDBないと言われたので、rake db:createしましたら行けました)
しかし、何でこんな動作になっているのだろう?
なるべくシステムに入っているgemを使いたいのですが、満載のvendor/gems以下や、vendor/rails以下は
手動で削除しちゃっていいものなのでしょうか?
rails 2対応の初心者用参考書でお勧めはどれですか?
既存のapache管理下のものに影響与えないように導入することはできないのでしょうか
restful_authenticationを使ってログイン認証を行おうと思ってるんですが、 画面の遷移がない場合5分経ったらセッションを消してログアウト状態にしたいと思っています。 以前はacts_as_authenticatedを使って、ログインされたらデータベースのsessionテーブルにユーザーの session情報を保存しておいて、ユーザーが画面遷移をしたら、そのsession情報を更新しておき 5分おきにsessionテーブルを監視して、更新時間が5分以上経ってたらsessionテーブルから削除するようにして ログアウト状態を再現していました。 restful_authenticationを使う場合は、データベースに値を持たなくても上記のような事ができるのでしょうか? すみませんが、お知恵をお貸しください。宜しくお願いします。
423 :
nobodyさん :2009/11/18(水) 17:36:25 ID:8qlvL/3i
都道府県のデータをRubyの配列で用意しようと思うんだけど、 どこのファイルにおくのがおすすめでしょうか。 JP_STATES = [ '北海道', '青森’, ... ] こんな感じのデータです。
Railsアプリのルートディレクトリを表す変数とかありませんか?
>>422 restful_authentication自身にはそういった機能はなかったはず。
データベース側をきっちり削除したいなら自前で実装するのがいいだろうね。
クッキーのexpireでいいなら、2.3以降ならActionController::Base.sessionの:expire_afterを指定、
それ以前ならdynamic_session_expプラグインを使えばいい。
>>423 2.0以降なら config/initializers以下に。
それ以前ならconfig/environment.rbやconfig/environment/*.rbに直書きするか
config/以下にファイルを置いてenvironment.rbなどからrequire。
>>424 RAILS_ROOT
いまは Rails.root でもOK
Wikiみたいなアプリで、文字列をHTMLに変換する処理をParserとしてモデルに切り分けたいのですが url_forとかhoge_urlとかはモデルから使えないので、リンク生成をどうしたものかと思っています。 config/routes.rbの設定と重複しないために、できればURL生成メソッドで作りたいのですが どうにかできないでしょうか?
>>427 モデルじゃなくて(モデルでもいいけど)、
ふつうのライブラリみたいに lib/以下にParserとしておいて、
コンストラクタでコントローラーのインスタンスを渡す、とかどうだろか
lib/以下に置く時の注意は、moduleにしてRailsが想定する名前の付けか足しておくと、
requireとかしなくても、自動で読んでくれる。はず。
詳しい方きぼん
ついでに質問なのですが、FormBuilderやFormHelperを継承せずに拡張したいのですが、うまいやり方ないでしょうか? 今は、 lib/hoge_form_helper.rb として、 module HogeFormHelper module FormBuilder def my_text_area(method, options = {}) : end end end 上記のように書いて、application_helper.rbにて、 class ActionView::Helpers::FormBuilder include HogeFormHelper::FormBuilder end のようにして、組み込んでいます。 FormBuilderを書いたら、FormHelperも追加したくなるのが人情というものですが、その場合、 HogeFormHelper::FormHelper を書いて、application_helper.rbに、 class ActionView::Helpers::FormBuilder include HogeFormHelper::FormBuilder include HogeFormHelper::FormHelper end のようにさらにするのが不恰好に見えます。 これらの処理をlib/hoge_form_helper.rb側におけないものでしょうか?
rspecでhave_textとかinclude_textが動かなくて困っています。
現象:
get "some_action_name"
response.should include_text("foo")
とすると
expected "foo", got "1"
と表示され、失敗します。
response.should render_template(...) は成功しています。
調べたこと:
自分で調べたところ、p response.body をすると "1" が出力されました。
これはテンプレートがレンダリングされてないのだと思い、テンプレートの中で
$stderr.puts "**** rendered *****"
みたいに入れると、出力されませんでした。
推測:
どうもgetを呼び出しただけだとテンプレートがレンダリングされない?
rspecのチュートリアルだと
ttp://rspec.info/rails/writing/controllers.html get 'some_action'
response.should have_text("expected text")
とあるので、getだけでいいと思うんですけど、ほかに何か必要でしょうか。
>>429 プラグイン化するとか。
結局はincludeするんだけど、vendor/plugins に丸ごと置くだけでよくはなる。
Railsで、text2html みたいなヘルパーってありませんでしたっけ? 「rails text2html」でぐぐっても、それらしいのは見つからず。
RoRをWindows上で稼動させていてアップローダーを作ったところ 日本語のファイルがUTF-8で生成されてWindows上で文字化けします ファイルを保存するときにSJISに変換しないといけないのでしょうか? NTFS自体はUNICODE対応のはずだし なにかが間違ってるような気がするんです
>432 textile とか markdown のこと? >433 お前が間違ってる
form_remote_tagとselect_tagを使ってAjaxで選択リストの値を送りたいのですが、値を受け取るにはコントローラでどのようなコードを書けばよいのでしょうか?
>>433 UTF-8で保存するのでもなければSJISで保存するのでもない
UNICODEで保存するんだぞ
parentテーブルとchildテーブルがあるとして、 parentモデルにhas_many :childを指定してchlidテーブルに belogns_to :parentと指定します。 この状態の時に「parent.child.replace = @child」でchildに値をセットして parent.saveとすると新規登録はされるんですが、更新が上手く行きません。 何か書き方がいけないのでしょうか?それとも仕様でしょうか? ruby 1.8.6でrailsは2.2.2です。 よろしくおねがいします。
438 :
nobodyさん :2009/11/22(日) 04:51:41 ID:Z6X1KQFW
>>436 UNICODEで保存?
UTF-8/16じゃなく?
write open するときに OpenFileA()じゃなくて OpenFileW()使えっていう意味では
ふつうに <script src=></script> でいいんじゃないの?
当方Windowsで開発をしています
ruby script/serverを実行した際に
C:\rails\hello>ruby script/server
=> Booting Mongrel
=> Rails 2.3.4 application starting on
http://0.0.0.0:3000 => Call with -d to detach
=> Ctrl-C to shutdown server
でコマンドプロンプトが次のWEBRICKが起動した〜などを出力してくれません
Ctrl-Cをしてもサーバーは停止できません
一度だけこの状態で長時間放置したときに
500 Internal Server Error
unknown error
という表示がされました
解決方法がさっぱりわかりません
どなたか解決方法知っている方がいれば教えていただけるとありがたいです
444 :
nobodyさん :2009/11/24(火) 03:53:25 ID:igGLII2V
>>442 誘導されておきながらそれを書かないからマルチ扱いされる
あと誘導前のスレにも移動する事くらい書いた方がいい
ちなみにMongrelの事は知らないので質問には答えられない
>442 もっと詳しく。 エスパーは希少なのでそれだけの情報では足りない。 何が足りないのかは考えろ。
>>442 何をしたいのか、何を聞きたいのか、意味がわからん。
mongrelをgemで入れている環境なら、script/serverはwebrickではなく自動でmongrelが起動するよ。
webrickを明示的に起動したかったら、 script/server webrick
とかするんじゃなかったかな?調べてみて。
Ctrl-Cは何回かおしたら止まる気はする
質問をお聞きします。 viewやヘルパーを書く時に、javascriptのパスを渡したいのですが、 javascrip_path "hoge" などと書くと、 /javascript/hoge.js というのが得られるのですが、viewでjavascript_include_tagメソッドで得られるように、 /javascript/hoge.js?1259048403 のようなキャッシュしないパスを簡単に得るメソッドはないものでしょうか? ソースも見ているんですが、どこで付加されているのかイマイチわからんです・・・
450 :
449 :2009/11/25(水) 16:51:10 ID:???
実際はlib/以下に配置したモジュール内から、以下のようにして記述しているのですが、 ApplicationController.helpers.javascript_path "hoge" hoge.js?1235343 のようになってくれません。 Rails consoleで上記を試すとちゃんとついてくれるのですが・・・
わからないけど、これは関係あるだろうか cache_asset_timestamps
452 :
449 :2009/11/25(水) 17:24:16 ID:???
>>451 ありがとうございます。
ソースも見ていたのですが、該当箇所はわかりました。
javascript_path→compute_public_pathときて、rewrite_asset_path内で?のあとにタイムスタンプを付加しているようでした。
で実はできねーよヽ(`Д´)ノ ウワァァン!!と思って四苦八苦していたのですが、
別のビューの似たようなページのソースをずっと見ていました orz
正しいページを見たら、ちゃんと
/javascript/hoge.js?1259048403
というようになっていました。
解決しました。
おかげさまでありがとうございました。スレよごしスマソ
453 :
nobodyさん :2009/11/26(木) 11:02:42 ID:S4TWLvc3
ぬるぽ
Rails 2.3 = Rails 3.0 ってあるけど、そうなの?
456 :
nobodyさん :2009/11/26(木) 19:34:03 ID:S4TWLvc3
ossでソースきれいで参考になるプロダクトってある?
458 :
nobodyさん :2009/11/27(金) 16:27:52 ID:uE3HMbl5
rails version 2.3.5 just released.
やっとこさrails2系に慣れてきたのにrails3とかワロス
config/locales/ja.ymlを作って ja: Hello: こんにちは と書いた。あとconfig/environment.rbに config.i18n.default_locale = :ja を追加した。それでも ruby script/console を実行して irb> I18n.t('Hello') => "translation missing: ja, Hello" となる。 何が足りない?誰か助けて。
>>460 サンプルの config/locales/en.yml にあるキーは小文字の hello なんだが、
YMLに小文字で書いて呼び出しで大文字のHelloを使っているのではあるまいか?
>>460 config/locales/ja.ymlは、このようになっていないと動かない。
この状態で、I18n.t("hello")で翻訳される事を確認した。
-----------------------
ja:
hello: こんにちは
-----------------------
単に、hello: の行だけでは動かなかった。
たぶん、そのあたりじゃない?
463 :
462 :2009/11/28(土) 01:06:47 ID:???
あ、ごめん。
よく見てみたら、
>>460 もちゃんと書いてたね。
ちなみに
ja:
hello: こんにちは(hello)
Hello: こんにちは(Hello)
って書いたら、こうなったので全部小文字で書かないといけない
という事はなさそう。
>> I18n.t("hello")
=> "こんにちは(hello)"
>> I18n.t("Hello")
=> "こんにちは(Hello)"
確認したrailsのバージョンは2.3.4。
>>463 全部小文字で書かないといけないというわけではなく、
ファイルでしたキーとコードから参照したキーが違ってるんじゃないかという
指摘だと思う。
ただのYAMLで定義したHashだし。
465 :
nobodyさん :2009/11/28(土) 17:18:18 ID:gofPBBCV
>>198 > 教祖がデビアンで開発してるから、
そのわりにパッケージが古いんだよな。
railsはgemで入れるとしてrubyがいつもチョット古いのが面倒だ。
<%=h foo.bar.name.blank? ? '-' : foo.bar.name %> というのが頻繁にでてくるので、ヘルパーメソッドを定義したい。 def default_val(val, default='-') val.blank? ? default : val end ・質問1: すでにこのようなメソッドはありますか? ・質問2: いいメソッド名があれば教えてください。
1: ないと思う 2: value_or_default(foo.bar.name) とかどうだろ
>>469 さんくす。
できればもうちっと短い名前がいいんだが。いいのがないものか。
#blank? になるものが常に偽とみなせるなら foo.bar.name || '-' でいいんだけどねー。 "" とか [] は #blank? になるけど真だからなあ。
blank?で判断する || 演算子が欲しくなるな。
StringとNilClassにorってメソッドを・・・
Rails初心者です。 fixturesは使わずに手軽にテストデータを入れようと、 勝手データテキストファイルと勝手スクリプトを書いて、 /db/migrateに両方起きつつ、NetBeans上からファイルを実行してみたのですが ファイル読み込みの時点でNo such file or directoryとなってしまいます。 そこで質問ですが、 ●このデータにアクセスさせるためにはどう書くべきですか? ●データ投入はfixturesを必ず使うべきですか? よろしくお願いします。
>474 知るか
>>474 ・Rails環境を利用した勝手スクリプトはscript/runner経由で使う
他なにかあったけ。
フォームを入力してSubmitボタン→「ありがとうございました」ページ というのをつくったのですが、ありがとうございましたページでブラウザの戻るボタンを押し、 再度Submitボタンを押すと、同じデータが送信されてしまいます。 これは二重サブミットと呼ばれているそうですけど、これを防ぐにはどうするのがいいんでしょうか。 よさげなプラグインとかありましたら教えてください。
RailsによるアジャイルWebアプリケーション開発第3版 買ったぞ。改訂版だから当然だけどパっと見で2版とほとんど内容変わらず… 2版で見慣れたスクリーンショットやコラムがそのまま載ってる。 これからじっくり読んでみよう
>>480 rails トランザクショントークンでググれ
ちょっと質問があります。 Rails 2 ではDBに保存する日時はdatetimeはUTCになっててますよね。 日のデーダだけDBに保存したい、扱いタ場合どうするのがよいのでしょうか? 何時(datetime)、ではなく何日(date)ということです。 UTCの日時から何日かデータを取り出した場合、時間の情報がなくなって、 時差情報が欠落してしまいます。 たとえば、日本時間だとUTC+9ですが、 UTCで2009-12-01 23:00のdatetimeから、 日付をDBに保存しておきたい場合、日本時間に変換し(2009-12-02 8:00)、日付にし(2009-12-02)DBに保存する? こういう場合はどうするのがセオリーなんでしょうか? そもそも、date使わずdatetimeのまま(UTCまま)DBとかに入れてしまう?でも変だな?? 想定としては、date:datetimeと count: integerで日付と数値を次々と入力していったものを 日付別のデータにして保存したい(例えばデイリーの累積グラフにしたり)という場合の話です。
485 :
484 :2009/12/03(木) 09:23:29 ID:???
想定がわかりづらくてすいません。 UTC 2009-12-01 12:00, 100 UTC 2009-12-01 23:00, 100 UTC 2009-12-02 1:00, 100 というデータがあって、 2009-12-01, 200 2009-12-02, 300 という累積したデータを保存しておくというのを想定しています。
色々と酷くて答えようがない
>>485 この場合、UTCで集計してるんだから、
日付もUTCにせざるを得ないんじゃないの。
そもそもローカルタイムで格納するつもりはないの? config.active_record.default_timezone
ローカルはあとで困ると思うよ。utcを変換して使っておいたほうがいい。
>>485 UTCで保存する必要がないなら、config/environment.rbにある
config.time_zone = 'UTC'
この行をコメントアウトするか、削除すればローカルタイムで保存される。
>>489 UTCで保存して得した事なんて一度もないんだが、
どういうケースで役に立つの?
また、どういう場合に困るの?
>>490 国際的なアプリでユーザーの指定したタイムゾーンに合わせて
時間を表示するような場合は、ローカルタイム基準だと
話がややこしい。
どこからでも使われる可能性があるなら場所には依存しないほうが楽。
>>490 自分(or特定の相手=日本人)しか使わないならそれでいい
不特定多数相手なら考えを改めた方が良い
質問させてください。 Controllerってどのように分けるものなんでしょうか? 例えば、ショッピングサイトだったら、 ログイン、ログアウト部分、カート部分、購入部分みたいに機能別でしょうか? 作成しているアプリは規模も小さいので、 Controller一つでもできそうなんですが、 後から見たときに管理しやすい形にしたくて。
設計次第だし、一般論で答えろといわれてもそりゃ無理だ。 質問が曖昧で答えようが無い。 modelと必要機能の一覧ぐらいは示してくれ。
実際rorでショッピングサイトなんて組まないと思うよ。決裁の認証が通らないと思う。
PHPの方がマシだな Railsで重要な個人情報を扱うこと自体が怖い 簡易SNSとか個人で使うブログとかもっと軽いノリで作る時にしか使わない
意味が良くわからん。 開発者のセキュリティを考慮する能力しだいであって言語関係ないだろ。
釣りにしてもレベル低過ぎワロタ
>>501 IPAがどうした?
IPAはRuby/Railsに関する調査報告書を発表してる事は知っているし、
その内容はRailsを否定するものではない。
それからPHPについては、明らかに無関係だろう。
PHPなら問答無用でセキュリティに問題のないアプリケーションが出来上がるのか?
そんな訳があるまい。セキュリティは言語の問題ではなく、開発者側の問題だ。
セキュリティが言語選択とは無関係って頭悪すぎだろ
いや、PHPとRubyの2つで考えた場合、 どちらかを選べばセキュリティの問題が解決するってわけではない という事でしょう。 利用する側がセキュリティに対する意識をしっかり持って開発しないと脆弱なシステムが出来上がる。
PHPのフレームワークに比べて Railsってセキュリティホール多い印象がある
印象だけで語られてもな・・・ ソースとかないの?
馬鹿は伝染るから気を付けよう 相手をしてスレのレベルが下がっていく様を何度も見てきただろう?
印象も何もChangeLog見れば分かるだろ
お前がchangelogのどのあたりを言ってるのかわからない
512 :
nobodyさん :2009/12/06(日) 19:37:48 ID:eFQH73Wn
Rails2からだいぶ変わるのかなぁ やっと2系に慣れてきたのにマジでだるいー
どうせならGUI環境にも力入れてほしいわ NetBeansでも良いけど
IDEは別口だろう…
>>476-478 かなり亀ですが、レスありがとうございました。
独自のモデルメソッド?を作ってコントローラから呼ぶみたいなことしてました。
seed.rbはまだ試してないので、今度機会がある時はそちらを利用してみます。
ありがとうございました。
楽天がRoR使うって言ってたな
いや、すでに使ってるよ。 Ruby会議2009ではスポンサーにもなってるし、Railsに関する発表も行った。 まぁROMA(楽天が開発したKVS)の宣伝も兼ねてたと思うけど。
winでrailsで並列処理って出来ませんか? backgroundrbはwin対応していないらしく・・・ サーバにファイルアップロードして、進捗を表示したい。ここはAJAXかな。 しかも並列処理でファイル変換処理の優先度を設定したい。 力技でやるとしたら、 ファイルかDBに変換処理情報書き出して、WINのタスクで実行して、 出来たファイルのサイズ監視して進捗を返すぐらいしか思いつかない・・
>>519 Threadでごりごりやればなんとかなるんでない
>>519 win32-serviceを使って変換処理を常駐させておいて、
Railsアプリと変換処理をdRubyでつなぐ、とか適当に考えてみた。
522 :
nobodyさん :2009/12/09(水) 02:23:11 ID:EO2jQSYV
>>519 ファイル進歩具合なら、それは単にAJAXで出来そうな気がするが・・・
開発用サーバーで一個しか立ててないなら、他の処理はできないかもしれないが
mod_proxy_balancerとmongrelを使っています。 mongrelが起動していないときは Service Temporarily Unavailable というページが出るんですが、これをカスタマイズするにはどうしたらいいでしょうか。 やりたいことは、「現在停止中です。再開見込みは何時何分です。」というメッセージを出すことです。
>>525 mod_〜〜てことはapacheがフロントエンドだと思うんだけど、apacheの設定で503表示をカスタマイズすればいいんじゃまいか?
質問させてください。 Userモデル Unkoモデル があった場合、UserがUnkoごとにそれを所持しているかの状態を保持するためにUserUnkoPossesionモデルを作りました。 ユーザーのうんこ所持状態で、カラムは has_unko:boolean、user:references、unko:references です。 このような状態で、 unkos = Unko.all user = my_user のようにunkosと現在のuserがある場合、下記のように各unkoごとに userがhas_unkoでunkoを持っているかどうかで場合分け処理したいのですが、 どのように書くのがスマートなものでしょうか? unkos.each do |unko| : end Rails guideのassociationsを見ていたのですが、いまいちスマートな方法がわからず・・・ associationは以下のように書いています。 class UserUnkoPossesion < ActiveRecord::Base has_many :user_unko_possesions has_many :users, :through => :user_unko_possesions end class UserUnkoPossesion < ActiveRecord::Base belongs_to :user belongs_to :unko end
>>527 下の方がミスってました。スマソ
class Unko < ActiveRecord::Base
??has_many :user_unko_possesions
??has_many :users, :through => :user_unko_possesions
end
class UserUnkoPossesion < ActiveRecord::Base
??belongs_to :user
??belongs_to :unko
end
RailsをSubversionで共同開発する場合ってgenerateで作成したファイル一つ一つにsvn addするんですか?
>529 $ script/generate xxx -c ... で作る。gitは -g generateを引数無しで実行してみよう。 railsコマンドでも $ svn co testapp (空) $ rails -c testapp $ cd testapp $ svn commit とか。
531 :
529 :2009/12/09(水) 19:02:19 ID:???
>>530 ありがとうございます!
まさに望んでた機能でした。Railsに抜かりなしですね
ActiveMailerでのメール送信がうまくいきません。
ログには
Sent mail to
[email protected] とあるので、ActiveMailerがメールを送信しようとしていることはわかりました。
ただActiveMailerが内部でどのようなコマンドを使ってメールを送信しているのかが
わからず、困っています。
ActiveMailerでメールが送信できないときに、どのような点をチェックしたらいいのか教えていただけないでしょうか。
たとえばsendmailが使えるか、とか。
ActionMailerは、自分でSMTPをしゃべる(net/smtp)ことも、 外部のsendmailコマンドに任せることも出来る。 設定はこのへんか。 config.action_mailer.delivery_method = :test | :smtp | :sendmail config.action_mailer.sendmail_settings = { :location => '/usr/sbin/sendmail', :arguments = '-i -t' } 以上リファレンスより。
初学者に対してIDEはどれがおすすめですか? エディタ+コンソールで十分だとは思いますが、もしおすすめがあれば教えてください。
535 :
534 :2009/12/10(木) 11:30:11 ID:???
連投すみません。 もしくは、開発に何を使われていますか? 良いところも含めて教えてもらえるとありがたいです。
初学者は何使っても同じ。ツールの使い方で悩む。 自分が持ってる本に載ってるやつにしとけ。
IDE慣れしてるならNetBeans使った方がいいと思うなあ デバッグ楽ちんだし
>>533 ありがとうございます。
ActiveMailerが内部でどういうコマンドをどういうオプションつきで起動しているか、調べる方法はありますか。
現在以下のような設定を行なっているのですが、うまくいきません。
ActionMailer::Base.delivery_method = :sendmail
ActionMailer::Base.sendmail_settings = {
:location => '/usr/sbin/sendmail',
:arguments => '-i -t',
}
現象としては、フォーム入力を受け取ってデータを作成し、そのときにObserverを使ってメール送信するようしています。
しかし実際にフォームを送信すると、HTTPレスポンスが返ってこずタイムアウトします。
どこでエラーになっているのかがまるでわからず、ActiveMailerのソースを読んでいるんですけど。。。わかりません。
sendmail のログを見たらいいんじゃね?
そもそも delivery_method = :test ではうまくいってるのかな。 どうなったか書かれていないからそこからきかにゃならん。
>>534-536 NetBeans使ってるよ。
Eclipse + aptanaもあるが、あれは重くてかなわんなw
debian + emacs + rinari + yasnippet
543 :
534 :2009/12/10(木) 17:25:42 ID:???
>>542 emacsで開発とか憧れです。
Aptana重いですよね。やっぱりnetbeansですかね。イマイチ使いこなせてない…。
ブラウザの戻るボタンを使わせないために、ブラウザにキャッシュをさせないようにしたいのですが、うまくいかないので相談にのってください。 あるページをブラウザにキャッシュさせたくなくて、以下のようにしました。 hdr = response.header hdr['Cache-Control'] = 'no-cache' hdr['Pragma'] = 'no-cache' hdr['Expires'] = 'Thu, 01 Dec 1994 00:00:00' キャッシュさせたくない理由は、ページを遷移したあとで、ブラウザの戻るボタンを使わせたくないためです。 それで、上のコードでうまくいくかと思ったのですが、うまくいかなくて困っています。つまり、戻るボタンで戻れてしまいます。 Firefox の Live HTTP Headers で見てみると、 Pragma: no-cache Cache-Control: private, max-age=0, must-revalidate Expires: Thu, 01 Dec 1994 00:00:00 というヘッダが出力されてました。なんか、Cache-Controlヘッダが書き変わっているんですが、こんなものでしょうか。 なお環境は Rails 2.3.4、Apache 2.2.13、mod_proxy_balancer + mongrel_rails 1.1.5 です。 よろしくお願いします。
545 :
527 :2009/12/10(木) 20:58:13 ID:???
class Unko < ActiveRecord::Base has_many :user_unko_possesions has_many :users, :through => :user_unko_possesions # 現在のユーザーが持っているかどうかを返す def is_selected_by_user possesions = user_unko_possesions.find_by_user_id(User.my_user) return possesions ? possesions.has_unko : nil end end Unko.all.each do |unko| puts "#{unko.name} is YOUR UNKO!!" if unko.is_selected_by_user end とかやってみたのですが、ループの度にSQLでfind_by_user_idが走るなど、 富豪的なのですが、もっとよい書き方はないのでしょうか?
546 :
527 :2009/12/10(木) 20:59:16 ID:???
>>545 is_selected_by_userじゃなかった。has_unko_by_userメソッドでしたミス失礼・・・
unkos = Unko.all( :select => 'unkos.*, user_unko_posessions.user_id', :joins => 'JOIN user_unko_posessions ON user_unko_posessions.unko_id = unkos.id') とすると、それぞれの unko に user_id がついてくるぞ。文字列としてだけど。
unkos = Unko.all(:include => :users) ??
>>544 キャッシュさえしなければ「戻る」を使えないように
できると思ってるの?
というかアプリケーションからブラウザのそんなコアな機能を制御出来るの?
全部のページに 戻るボタンからアクセスされたら 元のページにForwardするjavascriptを埋めておく
urlに?yymmddhhmmssとか現在時刻のライムスタンプつけたらキャッシュされないんじゃないかな? 自分は、よく更新されるファイルをこれで最新版返すようにしたよ。
ちゃんとよく読んでレスしろよ なんで戻らせたくないのかは書いてないが、 戻るボタンを押すとなんたらかんたらってメッセージが出るからじゃないのか?
555 :
527 :2009/12/12(土) 12:40:11 ID:???
>>547-548 ああ!そういうときにjoinsとかinclude使うのか。
SQLとかの知識少ないせいか最初、意味分からんかったw
サンクサンクス 試してみます
銀行の利用者用ページだと戻るおしたら戻った先で、表示できないことあるけどそういうことか?
amazonとか注意してないと同じもの二つ注文してたりするよな
そういうのはゴニョゴニュして検出するべきだけどね。 商用フレームワークとかだと当たり前に機能有ったりする。rorなら自前で用意するしかない。 金融系はちゃんと検出して、戻るボタンが押されましたとか表示するね。
そういう細かいケアをするのって日本くらいでは。 ユーザを無能のクレーマーと想定して作るのが生産性下げてると思う。
どうせいくら防御しても、ユーザーはとんでもないことやらかしてくれるからなー。 ダグラス・アダムスの警句は真だ。
金がらみのシステムとブログシステムとかは考え方を変えないと
563 :
nobodyさん :2009/12/14(月) 14:08:42 ID:o/Pytjxa
>>558 >金融系はちゃんと検出して、戻るボタンが押されましたとか表示するね。
戻るボタン自体は受け付けてくれないと
本当に戻りたいときに困るよなぁ
もともとのページ遷移モデルが間違ってるんだよな ajax でページ移動が一切起こらない設計にするべき
このスレで言うのもなんだが、WebアプリはSilverLightとかFlashとか、 バイナリにしてしまった方がいいと思うんだ。
>>565 バックエンドはRailsにすればこのスレの範疇w
全部Flashでもいいと思うが一般のwebサービスだとpermalinkとかないとちょっと困るな
質問があります。
認証プラグインAuthlogicを勉強してみた - MothProgのうしろがわ
http://d.hatena.ne.jp/mothprog/20090331/1238494900#c Authlogicを入れてみているのですが、こちらのページでは下記のように
current_userのような現在のユーザーを取得する処理をapplication_controllerにおいています。
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.user
end
上記のように書いてみてうまく行ったのですが、
別のモデルからこのメソッドにアクセスしたいため、Userモデルに置きたいと考えています。
しかし、モデルに置いてUser.current_userなどのように取得する場合、
def current_user
return @@current_user if defined?(@@current_user)
@@current_user = current_user_session && current_user_session.user
end
などのようにクラス変数に格納するようにすると何故かうまく動作してくれません。
たぶん、Railsのサーバーの場合、モデルのクラス変数が初期化されないのだと思うのですが、
この場合の対処法はありませんでしょうか?
568 :
534 :2009/12/14(月) 18:49:03 ID:???
569 :
567 :2009/12/14(月) 18:49:37 ID:???
すいません下のコード間違えました… def self.current_user return @@current_user if defined?(@@current_user) @@current_user = UserSession.current_user_session && UserSession.current_user_session.user end
570 :
534 :2009/12/15(火) 12:11:56 ID:???
「Railsによるアジャイル〜」の内容が本当にアジャイル過ぎて内容が理解しにくい…。
Railsで、クッキーが有効かどうかを調べる方法ってありますか。
それは Rails じゃなくて javascript の話です。
HTTPだけでやるには、最初にリクエストが来たときにクッキーを食わせて、 仮ページにリダイレクト、クライアントが改めてリクエストしてくるときに、 リクエストにそのクッキーが入っているかを見る。 で、必要なら仮ページから元のページにリダイレクトし直す。 とかだろうか?
>>573 仮ページを介さずとも同じところにリダイレクトでいいよーな気がする。
ページ推移をゴニョゴニョすればいい。 商用フレームワークなら当たり前についてる機能だ。 rorは自力でがんばれ。 フラッシュは最近もセキュリティの問題が発見されたし脆弱過ぎる。企業とか無効にしてる所も多いしな。後はアイフォンが非対応でマカが騒ぐとか。グーグル携帯使えでおkだが。
577 :
534 :2009/12/16(水) 16:10:13 ID:???
何この「商用フレームワークうんぬん」の人気持ち悪い
FastCGIが嫌われてる理由がよくわからない
Railsとmod_proxy_balancerについての質問です。
現在、あるサイト (
http://www.foo.com ) をRailsでつくりました。
で、それの管理画面を
https://securesite.com/foo/admin にしようとしています。
そのために、以下のような設定をhttpd.confに追加しました。
ProxyRequests Off
ProxyPass /foo/images !
ProxyPass /foo/stylesheets !
ProxyPass /foo/javascripts !
ProxyPass /foo/ balancer://railsapp/
ProxyPassReverse /foo balancer://railsapp/
<Proxy balancer://railsapp>
BalancerMember
http://127.0.0.1:8000 loadfactor=20
BalancerMember
http://127.0.0.1:8001 loadfactor=20
</Proxy>
これで動くようにはなったんですが、問題があります。
(つづく)
(つづき)
・
https://securesite.com/foo/admin/ にリクエストがあった場合、
Rails には /admin/ へのリクエストとして届くようです。
そのため、'/foo' は無視して
class AdminController < ApplicationController
def index
end
...
end
map.resources :admin
とする必要があります。
・しかしこれだと admin_path() が '/admin' を返すのです。
そうではなくて admin_path() は '/foo/admin' を返すようにしたいのですが、できますか。
・あるいは、Railsでは
map.namespace :foo do |x|
x.resources :admin
end
として、mod_proxy_balancerのほうで
http://securesite.com/foo/admin へのアクセスを
Rails に /foo/admin へのリクエストとして渡せることができればいいんですけど、
Apacheのマニュアル読んでも分かりませんでした。そんな設定を知っている人がいたら教えてください。
Railsがリクエストを受け取ってからコントローラで処理するまでの流れを知りたいのですが、なにかいい方法はありますか。 ソースを読むならここを読めというのがあれば教えてください。 バージョン:Raisl2.3.5
>>579 プロセスの生き死にの管理が面倒。
いつの間にかささってレスポンス返さなくなったときに、
それを発見して、killして、新しいプロセスを立ち上げるというのを
大抵は自前でどうにかしないといけない。
ウェブサーバを落としても、プロセスは生きてたりするしね。
>>583 class ApplicationController < ActionController::Base
def index; raise; end
end
とでもして、ログに出るスタックトレースにしたがってソースを読めばいいかと。
>>584 でもruby以外にpythonやマイナーな言語で書かれたものとか混合しようとするとFastCGI以外になさそうなんですよね
FastCGI入れられる環境なら、Ruby側はpassengerつかっときゃいいような気がするが。 自動再起動機能もあったろう
>>583 NetBeansなどIDEでブレークポイントし掛けてソース追っていく方法はあるよ。
俺はRailsのデバッグ、というかソース追って読むの挫折したw
method_missingとかのせいか遷移がわけわからん。
591 :
nobodyさん :2009/12/21(月) 19:39:55 ID:fEey4yBh
592 :
nobodyさん :2009/12/21(月) 22:14:09 ID:fEey4yBh
Railsで、404 Not Foundを返すときはどうするのがいいでしょうか。 Merbだとそれ用の例外を投げるという実にわかりやすい方法があったのですが。 ちなみにRails2.3.5です。
コントローラ内で render 凝りまくったエラー画面, :status => :not_found としてもよいけど、例外単位でよければ以下のように。 ActionController::Base.rescue_responsesに例外クラス名とステータスを登録する。 たとえば ActionController::Base.rescue_responses['ArgumentError'] = :bad_request デフォルトで ActiveRecord::RecordNotFound なら :not_found みたいなのが登録さ れている。 通常の例外時の動作は public/STATUS.html を返す(render_optional_error_file) だけなので、これを変更したければ rescue_action_in_pubic などをカスタマイズする。 なお、development だと、そのままでは開発向けエラー画面が出るので、 エラー画面自体の確認をしたいときは config/environments/development.rb の consider_all_requests_local を false にし、ループバック(localhost や 127.0.0.1)以 外のアドレスでサーバにアクセスする。 ソースは action_controller/rescue.rb
ファイルをアップロードするときにセキュアにするにはどうしたらよいのでしょうか? ssl通信等を使用する方法はどのあたりを調べるとわかるでしょうか?
>>597 HTTPS自体はアプリ側で特に意識する必要はないよ。
どっちかというとWebサーバの設定。
>>594 例外の処理には rescue_from というのもあるわん。
Herokuってどうなの?
>>598 そうなんですか.ありがとうございます.
ロケーションバーからアクションに直接アクセスされた場合のみ他ページへのリダイレクトをかけたいんですが,どうやればよいのでしょうか? 例えばViewで, <div id="sample"> <%= select("foo", "bar", data) %> <%= observe_field(:foo_bar, { :update => :baz, :on => 'change', :url => { :action => :some_action }, :with => "'foo_bar=' + value"}) %> </div> となっている場合,ブラウザのロケーションバーから直接localhost:3000/controller/some_actionへアクセスされた際に, 他のページへリダイレクトさせたいです. コンボボックスの選択変更によりsome_actionが起動した際には,リダイレクトしないようにしたいです. some_action内にそのままredirect_toを書いてしまうと,コンボボックスの選択変更でsome_actionが起動したときにもリダイレクトしてしまうので困っています.
>>602 request.referrer を見る。(referでも可:-)
ただし、送らないように設定している人がアクセスできなくなる。
今回はAJAXみたいなので、別解として
verify :xhr => true, :only => :some_action
も紹介しておく。今回はたぶんこっちがよいのでは?
>>603 なるほど,そうすればいいんですか.
思ったとおりに実現できました.ありがとうございます.
rails2.3.5使う場合って rubyのバージョンは1.8.6推奨なの? reeは1.8.7出てるから、そろそろ1.8.7?
2.3系はどっちでもえーよ。 3.0.preでは1.8.6は切り捨て。
607 :
nobodyさん :2009/12/26(土) 12:36:12 ID:N7t9YIOf
古い資産がないなら1.8.7使っておいた方が良いような気がする
そもそも、railsの人って1.8.6じゃなきゃダメみたいなイメージがあるんだけど 1.8.6と1.8.7の差ってそんなに大きいの?
1.8.6を捨てたくなる程度には大きい。
610 :
nobodyさん :2009/12/26(土) 18:16:55 ID:5fe5VdgJ
>>600 どうっていうと?
デプロイは異常に楽だよ。
DBに溜め込むデータ量が少ない自分専用の小物アプリくらいなら無料でもいける。
まともなアプリを設置するには有料じゃないと無理。
rails3っていつベータリリースされんの?
まだlighthouseにも日付が出てないな。 見たいだけならgitからどーぞ。
from/to日付の入力チェックの際に from>to ならエラーとするようなvalidateを書いたんだが def validate errors.add(:from_date, "日付が不正です。") if (from_date > to_date) end エラー発生時にfrom/toどちらとも赤い四角(class="fieldWithErrors")で囲む方法ってある?
>>614 そういうカスタマイズって、Railsは難しいよねー
質問なんですけど、ruby script/console してから、FooController.new.index()を実行するとエラーになります。
consoleのなかからControllerオブジェクトを生成するただしい方法を教えてください。
>>615 app というオブジェクトがある。
script/console> app.get '/foo/index'
のようにリクエストを投げると
script/console> app.controller
に対応するコントローラがセットされる。
>>614 フレームワークの範囲内でやるには、関係が満たされていないときに
両方を errors.add すればいいんじゃない?
619 :
614 :2009/12/27(日) 19:31:19 ID:???
>>617 それだとエラーメッセージの表示がすっきりしない。
どうしたもんか。
>>619 全く未検証ながら、
ActionView::Base::Helpers::ActiveRecordHelper#to_date_select_tag(など)の定義を
app/helpers以下にコピってきて、
error_wrapping(to_date_select_tag_without_error_wrapping(options, html_options),
object.errors.on(@method_name))
を、
has_error =
case @method_name
when :from_date, :to_date; object.errors.on(:from_date) or object.errors.on(:to_date)
else objet.errors.on(@method_name)
end
error_wrapping(to_date_select_tag_without_error_wrapping(options, html_options), has_error)
と書き換えた定義を作る。
from_date to_dateのフィールドのエラーを判定するときだけ相方のエラーも考慮。
621 :
nobodyさん :2009/12/28(月) 06:27:12 ID:6MaAP7GA
622 :
nobodyさん :2009/12/30(水) 06:18:07 ID:p1BkGZKi
623 :
nobodyさん :2009/12/30(水) 10:01:16 ID:+1QPHe9X
あけおめ
624 :
nobodyさん :2009/12/30(水) 11:20:23 ID:p1BkGZKi
毎日1本ずつかと期待してたがやっとパート2が来たか。
Ruby1.9.2が正式リリースされないと、Railsも正式リリースされないんだろうな 1.9.2はpreview2も出ないし、まだ先なのかね
RubySpec走らせようぜぇ
628 :
nobodyさん :2009/12/31(木) 06:41:41 ID:0ZeyyLVy
629 :
nobodyさん :2009/12/31(木) 06:58:56 ID:0ZeyyLVy
630 :
nobodyさん :2009/12/31(木) 08:31:33 ID:0ZeyyLVy
何度も書くほどの事かね. dogfooding出来る程度動くようにはなってきたというのはわかった
632 :
nobodyさん :2009/12/31(木) 22:48:13 ID:0ZeyyLVy
railsでleft join whereって使えないよな。 has_manyとかはidしか条件にしないし、他の条件を使えない気がする。
634 :
nobodyさん :2010/01/03(日) 17:24:17 ID:Kv5gn0C+
>>633 :joins 指定すればいいという話ではなく?
Railsの勉強で、簡単なブログツールを作っています。 記事のモデルオブジェクト(Post)にコメント数を表すカラム(comment_count)を作成しているのですが、これの更新方法がよくわかりません。 たぶんトランザクションを使って、コメントが保存できたらcomment_countを1増やすという方法になると思うのですが、 以下のようなコードであっているでしょうか。どなたか添削をお願いします。 def add_comment # ブログ記事のモデルオブジェクトを検索 post = Post.find(params[:id]) or raise ActiveRecord::RecordNotFound.new # コメントオブジェクトを作成し、記事IDを設定 comment = Comment.new(params[:comment]) comment.post_id = post.id begin # トランザクション開始 Post.transaction do # コメントをセーブ comment.save! # コメントがセーブできたら、コメント数を1増やす post.comment_count += 1 post.save! end # エラーがなければ 'OK' を出力 render :text=>'OK' rescue ActiveRecord::RecordInvalid => ex # エラーがあれば、エラーメッセージを出力 errmsg = comment.errors.collect{|arr| arr.join(': ')}.join("¥n") response.status = 422 render :text=>errmsg end end
638 :
nobodyさん :2010/01/04(月) 01:57:03 ID:14ehE+TL
無駄が多くて全然railsっぽくない。以下のようにするといいよ。 def add_comment # ブログ記事のモデルオブジェクトを検索 post = Post.find(params[:id]) # raise は明示的に書く必要はない。 # アソシエーションを利用してコメントオブジェクトをビルド(post_idは自動的に代入される) comment = post.comment.build # パラメーターでアップデート(うろ覚えなのでシンタックスエラーがあるかも) comment.update_attributes!(params[:comment]) end コメント数はcomment_countカラムを作らずに以下で数えるほうがいいと思うけど。よほど膨大な(100万単位の)コメントがつかない限り。 Comment.count(:conditions => 条件)
>>636 なるべく生のsql文は使いたくなくて
でもまぁこれが一番手っ取り早いか
営業能力も上げていかないと技術だけでは35歳以上はこの業界では生き残れないと断言しよう 40歳過ぎにもなれば、営業能力70%技術力30%くらいの割合になるマジで 同じ会社で死ぬまで雇ってもらえるなら別だが そんな保障はどこにもない
641 :
nobodyさん :2010/01/04(月) 02:09:27 ID:14ehE+TL
それに def add comment でなくて、 restfulに書くならばComment Controllerを作って、createアクションで処理する方がいいよ。 before_filter でPost.find(:post_id) を常にしておくべき。 そうすればその情報を使ってアソシエーションに沿ってコメントを作成できる。
642 :
nobodyさん :2010/01/04(月) 14:14:39 ID:CMnexdc2
643 :
nobodyさん :2010/01/04(月) 20:11:46 ID:CMnexdc2
>>637 自習するのは止めないけど、belongs_to の :counter_cache も忘れないで。
>>639 亀レスだが has_many :people, :foreign_key=> 'original_key_name'
とかじゃダメなのか?
>>645 おぉ。これでkeyを指定できるようになるのか。便利。
>>638 どうもありがとうございます。raiseは書かなくていいんですか。なるほどー。
> コメント数はcomment_countカラムを作らずに以下で数えるほうがいいと思うけど。よほど膨大な(100万単位の)コメントがつかない限り。
> Comment.count(:conditions => 条件)
すべての記事を、コメントやトラックバックの多い順でソートする機能を付けようとしています。
その場合、記事ごとにコメント数がついていたほうが簡単かつ高速なので、comment_countカラムを作っています。
とりあえず、トランザクションまわりについては
>>637 であってるのでしょうか。
詳しい方、お願いします。
>>647 コメント削除したらコメントカウントのカラムもupdateしないといけない
面倒くせ
ソートする機能を考慮しても コメント数はcomment_countカラムを作る必要性がわからん また高速性を考えるならrailsを使う意味がない、生産性重視ならcomment_countカラムはいらん
650 :
nobodyさん :2010/01/05(火) 10:57:18 ID:DXl89df8
651 :
nobodyさん :2010/01/05(火) 14:54:37 ID:s5/1mF78
>>647 transactionの使い方はそんな感じでいいと思う。
do..endのなかでsave!とかupdate_attributes!ね。AR::RecordNotSaved系の
例外が飛んで、transctionがrollbackする。
ただ、検索したり保存したりは
>>638 の書いているコードのほうがキレイなので
それを参考にした方がいい。
コメント件数は
>>644 のいうとおり、counter_cacheを使うと同じようなことを
ARが勝手にやってくれるので、プロダクションコードではそちらを使う方がいいと思う。
あと
>>649 > また高速性を考えるならrailsを使う意味がない、生産性重視ならcomment_countカラムはいらん
んなこたない。
counter_cacheなり、それの自作なりを使わないでソートするためには、
Rubyでゴリゴリ書くか、相関サブクエリ使うことになると思うんだけど、
前者はさすがに遅い/無駄だし、後者は面倒なだけだと思うんだけどどうか。
>>652 コメントカウント出すサブクエリなんてなんて1分もあれば書けるだろ
面倒なのかな?
654 :
nobodyさん :2010/01/06(水) 12:25:42 ID:3+83O9QS
Rails 3 in Action
http://www.manning.com/katz/ Yehuda Katz
MEAP Release: 2009
Softbound print: April 2010 (est.) | pages
ISBN: 9781935182276
1. Building Your First Rails 3.0 Application
2. Overview of the Rails stack(s) + architecture
3. Creating Rails Applications
4. Using DataMapper for Models
5. Using ActiveRecord for Models
6. Other Choices for Models
7. Processing Requests
8. Routing in Rails 3
9. Customizing Views
10. Working on the Client Side
11. Supporting Characters
12. Using the Plugin API
13. Testing Your Applications
14. Deploying a Rails Application
15. Scaling Rails
Appendix A Just enough advanced Ruby
Appendix B The migration story
Appendix C Rails 2 to Rails 3
Appendix D Merb 1 to Rails 3
655 :
nobodyさん :2010/01/06(水) 16:39:08 ID:3+83O9QS
656 :
nobodyさん :2010/01/06(水) 16:45:50 ID:3+83O9QS
657 :
nobodyさん :2010/01/07(木) 09:51:46 ID:acpOW5s0
SQLite3で排他制御する場合どうすればいいですか? SQLite3にはSELECT FOR UPDATEはないので find(:lock => true)は使えないですよね。 トランザクションを BEGIN IMEDIATE TRANSACTION で開始すればいいのじゃないかと思うんですが どこに書いたらいいものか分かりません。
659 :
nobodyさん :2010/01/09(土) 14:09:25 ID:C3iGMVdd
SELECT FOR UPDATE なんて使わないから、使える
660 :
nobodyさん :2010/01/09(土) 18:20:07 ID:eVooFF5+
>>659 すいません。
だれ(なに)が使わないので
だれ(なに)が使えるのでしょうか?
662 :
nobodyさん :2010/01/10(日) 12:04:22 ID:shGxwVTU
663 :
nobodyさん :2010/01/10(日) 12:10:39 ID:shGxwVTU
>>659 小学生でもわかる日本語でおねがいします
馬鹿にはrorは無理。
config/environment.rb にいろんな設定書くけど、 独自に設定を追加してもいいんでしょうか。 Rails::Initializer.run do |config| config.my_value = 'foobar' end みたいな。 あと、それを追加したとして、読み出す方法を教えてください。
667 :
nobodyさん :2010/01/11(月) 19:32:25 ID:yaZxWBJR
>>666 config(Rails::Configuration)はRails本体の設定しか受け付けない。
定数使って
MY_CONFIG = { :foo => 'bar', :hoge => 'fuga' }
のようにするのが手っ取り早い。
ちなみにアプリの利用者が変更する必要がない設定は
config/environment.rbやconfig/enviroments/*.rbに書く。
利用者が変えられる設定ならconfig/initializers/*.rbに書く(2.0以降のみ)。
設定が大量になりそうならYAMLファイルで外に出してenvironment.rbなどから読み込むか、
configatronのようなプラグインを使うか。
質問主ではないが、勉強になった。 ありがとん > 668
ここでアホな質問してる人らって、わからんことあったらまずここに書いて のんびりテレビでも見てんの?
アホな質問続きだが railsで使用しているpluginのバージョンを一括表示する方法ってない? script/about みたいな感じで。
672 :
nobodyさん :2010/01/12(火) 04:46:22 ID:609VTkN+
Paginateを使いたいのですが以下のエラーが出ます。 --- undefined method `total_pages' for #<Array:0x5bcc4d8> Extracted source (around line #42): 42: <%= will_paginate @items %> --- scaffoldで新しくひな形を作り、 environment.rb の一番下に require 'will_paginate' index.html.erb の一番下に <%= will_paginate @items %> pages_controller.rb に def list @items = Item.paginate :page => params[:page], :per_page => 10 end これらを追加しただけなのですが、何が原因でしょうか。
質問させてください。 テストサーバー(staging環境)用にproduction環境でRailsアプリを動かしているのですが、 エラーが出たときにサーバーにもぐっていちいちlog/production.logを見るのが面倒です。 また、サーバーのログイン権限が無い開発者にもローカルの開発サーバー(webrickやmongrelのdevelopment環境)のように エラー内容を人目でわかるようにしたいのですが、そのようにエラーを表示する方法はないものでしょうか?
675 :
nobodyさん :2010/01/12(火) 20:27:20 ID:4XZzyMEc
>>673 なぜpages_controller.rb? その説明だけだと、items_controllerになりそうな感じだけど。
678 :
nobodyさん :2010/01/14(木) 21:03:02 ID:MmCuc8fs
679 :
674 :2010/01/14(木) 21:35:26 ID:???
MYSQLで以下のようなテーブルを使っています。 | id | name | email | check(boolean型) | restful_authenticationプラグインのsignupでユーザーを新規登録した時、 "check"に自動的に0の値を入れたいのですがどのようにすれば良いでしょうか?
スキーマ定義を触れるならMySQLのcreate tableのほうで、 checkカラムにデフォルト値0を設定しておけばいいと思う。 create/save時に未指定なら0が入る。 あとはbefore_saveとかafter_initializeとかのフック。
>>680 はてなのタケルンバさんのblogで丁寧にまとめられていますよ
基本的にJava屋で、今年からRailsをやってます。 find_by_sqlってのを見つけた瞬間、 find_by_sql("select col1, col2 from table") って感じで使いまくってんだけど、これっていいのだろうか? だっせー、かっこわりーって思われないだろうか?
求めるタスクがこなせてるならいーんじゃない?
>683 ダサい。 なんでリファレンスをちゃんと読まないんだ。自称Java屋のくせに。
>>683 ほんとにその程度のSQLで使ってるのなら、
ださいとかじゃなくてありえない
もう転職考えた方がいいレベル
>>683 >find_by_sql("select col1, col2 from table")
あれ、Table.find() って col1, col2 の指定ってできたっけ?
できなかったと思うから、自分もfind_by_sqlよくつかうよ。
外のカラムが不要な場合は Table.find(:all, :select => 'col1, col2')
うおっ × 外(ほか) ○ 他(ほか)
タケルンバに失笑されるレベル Javaフレームワークは使ったことないんだろか
>>688 間違えた、find_by_sql()じゃなくてActiveRecord::Base.connection.select_rows(sql)だった。
group byやhavingが入るようなsqlだとこっちのほうが楽なんだけど、そんなことない?
AR::Baseとして取り出す必要がないならそれも手ではある。
パフォーマンス(笑)のためだったりするんだろうか。
695 :
nobodyさん :2010/01/17(日) 16:13:12 ID:mYKzzqeT
683です。 なるほど、やっぱりダサいのか ちなみに例に上げたのは簡単なやつだけど 実際に使ってるのは、サブクエリーが絡むような複雑なやつなんだけどね >> 691 Hibernate使ってたけど、あまり好きじゃないね >> 694 find_by_sqlの方が、パフォーマンスよくなるん?
696 :
nobodyさん :2010/01/18(月) 09:03:43 ID:BApO165G
697 :
nobodyさん :2010/01/19(火) 13:32:36 ID:aU7LUmun
passengerでrails動かしたいのですが、 DocumentRootにアクセスしてもdispatcher.fcgiのソースが表示されてしまいます。 これって正しくモジュールが読み込まれてないからなんでしょうか。 httpd.confにはLoadModuleもしてるしapacheのエラーは出てません。 LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9 PassengerRuby /usr/bin/ruby どなたか原因解明の手がかりwご存知の方ご教授願います。
.htaccessはどうなってる?
railsを勉強しようと思うんですが、初心者向けで お勧めの本はありますか?あるいは、これは読んで おくべき本でも構いません。
ついでに質問いいでしょうか? script/serverで開発用のmongrelなどを立ち上げた場合は、 動的に読み込んでくれているためか大概は開発中にファイルの編集後でも コードの反映はサーバーを立ち上げ直さずにブラウザのリロードで済みますよね? こういうのをscript/consoleでする方法ってないもんでしょうか? script/consoleの再起動はそんなに重くないとはいえ、何回もやってたらけっこう面倒です。 再度requireする?のがよいんでしょうか?
>>699 最近、Head First Railsて本の翻訳が出てて、洋書を読んだ感じだとだいぶよかった。
Rails 2.3にも対応している唯一?の本なので、独特のテンションが嫌いじゃなきゃかなりオススメ。
質問させてください。 コントローラーのbefore_filterのような感じで、レンダリング前にメソッドを実行するようなフィルタは定義できないものでしょうか? layout/application.html.erb 内でコントローラーのメソッドを(ヘルパー化して)呼ぶしか無いでしょうか?
705 :
704 :2010/01/20(水) 18:57:33 ID:???
> layout/application.html.erb 内でコントローラーのメソッドを(ヘルパー化して)呼ぶしか無いでしょうか? これダメでした。 ヘルパー内で @hoge = 1234 のようにしてもerbの方に反映されませんね…。 layout/application.html.erb の最初の行にロジックを直書きして対処しました。 何かいい方法ないもんですかね
>>699 Head First Railsが今一番新しくて初心者向けの本、オススメ。
これでわからなかったらRailsは諦めて別なのをやった方がいい。
あと
RailsによるアジャイルWebアプリケーション開発の第三版がオススメ
第二版と初版は古いバージョンのRails用だから間違って買うと泣くはめになる。
Rubyスレで質問して、Railスレ逝けと言われて来ました。 今回初めてRubyを仕事で扱うことになり、 RailsによるアジャイルWebアプリケーション開発のT部を読んで Smarty使って、PHPで開発するのとそう変わらないなと思い、 本ちゃんプログラムの解析にかかったのですが・・・ ・ controllers,models,viewsともにjsファイルばかり。 ・ ブラウザでソースをみたら、ログイン画面なのに1万行近くソースがある。 ・ 画面遷移しても、URLは変わらない。 ・ サーバーとクライアントのソースがある? 等、ちょっと見かけたことのない構成でした。 こりゃわからんと思い、参考書の続きを読もうとしましたが、 そもそも参考書読んでわかる内容なのか疑問を持ちまして・・・ そこで、質問なのですが 1.上記のような構成はRailsでは一般的で初心者レベルの話 2.それなりに高度な技術で初心者が参考書を読んだ程度で 太刀打ちできるレベルの内容ではない 3.製作者が変態。そんな作り聞いたことがない。まず見かけない。 いずれですか。 1なら参考書読んで調べます(キーになる単語を教えてくれると助かります) 2ならダメぽと上に報告します。 3なら・・・頑張ります。 以上、教えて下さい。。。
あとRails始めるなら RSpecも同時に調べておいた方がいい。 BDD、TDDなどの開発手法を要チェック。 cucumberも
>>707 たぶんほとんど全機能をAJAXで実装しているんじゃないかね。
Railsがその中でどう使われているかは質問だけでは分からないけど…
>>710 ありがとうございます。
確かに、ブラウザの戻るボタンがグレーアウトしてる等
思い当たる節はあります。
AJAXを使用しまくっているという前提に立ってもう一度
解読してみます。
712 :
nobodyさん :2010/01/20(水) 22:19:08 ID:Qj1mXafK
>>713 本で学んだ後「本ちゃんのプログラム」にとりかかっている、と解釈した。
715 :
704 :2010/01/21(木) 08:26:59 ID:???
>>713 ありがとうございます。
layouts/application.html.erbのサイドバー内に
サイドバーなどにDBからクエリーしてきた最新の結果を常に表示したい、という感じです。
例えが難しいのですが、例えば睡眠時間を記録するサイトで
サイドバーに今日の睡眠時間、といったような数値を表示したいとします。
その場合、application_controllerにbefore_filterかまして
毎度呼ばれるのメソッド内にて今日の睡眠時間を取得する処理を書くと、
コントローラー内で処理をする前の数値を取得してしまいます。
コントローラー内で処理をした後の数値を表示したいのです(つまりできるだけレンダリング前に)。
なので、layouts/application.html.erbの先頭に、
今日の睡眠時間を取得する処理を書いちゃえ!ってことなんですが、
(できるだけモデル依存部はモデルに書くとしても)そういうロジックをviewに各のはどうなんだ、と思った次第です。
>>707 適当に予想します。
jsばっかり=フロントエンドがAJAX(JavaScript)、バックエンド処理がRails
(それでもmodelsがjsばっかりはない気が?)
JS(AJAX)がクライアント処理、サーバーがRailsと見た。
RSSリーダーのOpen Fastladder(Livedoor ReaderのRails実装でソース公開されてるやつ)
みたいなのをイメージしたんだけど違うかな。
つまり、RailsでwebアプリのAPIをガリガリ書いて、JavaScriptでガワを作るような構造。
まずは、テストコードを読むことから始めたらどうかな?
ちゃんとしたアプリならテストがたくさん書かれているはずなので、
どんな感じにモデルを扱っているかとか仕組みがわかるはず。
>>715 after_filterじゃいかんの?
scaffoldした時のshowアクションの挙動を止めたいんですが、何か方法はありますか? 新しい独自のアクション(hoge)を追加したときに、コントローラ名/hogeというアドレスに アクセスすると、showアクションでIDがhogeという風に動作してしまいます route.rbにて:exceptや:onlyなどを用いてshowアクションを取り除くようにしてみましたが、いずれも駄目でした
migrationの質問です。 DBのmigrationでself.downに元に戻す処理を書くと思うのですが、 カラムの追加や変更等簡単な処理は元に戻す処理は簡単にかけるのですが、 例えば、仕様変更であるキーの重複するレコードを削除するとか、その処理を元に戻す場合だと 処理が複雑で簡単には元に戻せなかったりしませんか? そのような場合、self.downをどのように書いたものでしょうか? self.upで変更するレコードを外部ファイルにまるごと(mysqldumpとかで)ダンプして、 self.downで戻すときはダンプしたのを(mysqlコマンドに)つっこむとかそういうったことしないといけないものなのでしょうか? 今は、整合性が取れなくならない場合(カラムとかをいじらないとか)で元に戻す処理が複雑な場合は、 self.downを書かなかったりしますが、どうしたものかなーと。 運用サーバーの方ではcapistranoでデプロイでdb:migrateをかけるときには 自動でmysqldumpするようにしかけてあるのでバックアップ自体は大丈夫なのですが・・・
>>718 rake routesしてルーティングを確かめるんだ!!
721 :
707 :2010/01/21(木) 22:01:06 ID:???
>>716 >jsばっかり=フロントエンドがAJAX(JavaScript)、バックエンド処理がRails
そんな感じでした。
フロントエンドで、SproutCore(始めて知ったのですが)を使用してました。
サーバーがRailsで、作りとしては、
最初にガサっとサーバーからデータを取ってきて、
フロントエンドで加工して使いまわして、
必要なときだけサーバーとデータをやり取りする感じでした。
>(それでもmodelsがjsばっかりはない気が?)
クライアント側を見ていました。
SproutCoreの構成がRailsによく似てたので。。。
サーバー側では、ちゃんとrbファイルがありました。
また、ブラウザでソースみたら1万行近く云々と言っていたのは
どうも、SproutCoreはビルドできるらしく、1つに固められた
rhtmlファイルのソースを閲覧していたみたいです。
今、試しに元のソースをビルドしようとしたら、文法エラー
undefined local variable or method 'output'
でビルドに失敗したので、このソースは本当にビルドできるのか
先方に確認中です。
まさかとは思いますが、Windowsではビルドできない(Ruby1.8.6.111)
なんてことはないですよね。。。
また何か進展がありましたら、報告させて頂こうと思ってます。
ありがとうございました。
>>720 なるほど
showに関するmapが先に呼び込まれていて、そちらが優先されていることがわかりました
自作アクションに関してconnectを使い、これをshowよりも先に記述するとうまくいきました
ありがとうございました
>>722 配列でアクションを指定するのですね
以前は以下のように指定していたのですが、これが原因だったみたいです
map.resources :items, :collection => {:hoge => :get}
これを先程のように配列指定にしたらすんなり解決しました
ありがとうございます
>>721 > まさかとは思いますが、Windowsではビルドできない(Ruby1.8.6.111)
そういうことって普通にあるよ。Railsプロジェクトならなおさらじゃないかな。
Rails開発はWindows環境はマイナー環境だと思うのでちゅうい
そういうときは、coLinuxとかVMWare使う
あとはRuby 1.8.7に上げてみるとか。
726 :
704 :2010/01/23(土) 05:49:49 ID:???
>>715 ありがとうございます。
実はあの後、layouts/appliacation.html.erbの先頭に @hoge = hogehoge のように書くと
他のyieldするerbからは参照出きなくて困っておりました。
before_renderでgithub等あさってみます。すでにあるということは需要はある要望なんですねw
>>717 after_filterだと変数参照出きませんでした。レンダリング後によばれるのかな?うーんん。
after_filterは、ページ全体をgzip圧縮するとか、携帯向けにShift_JIS+半角仮名 にするとかだねー。
特定ページのログを出力しない方法ってないのかな? ファイル管理のコントローラだけ、ページ表示するたびにいっぱいログが出るので、 ログを出さないようにしたいんだけど、情報無いのよね。。。 他のページはデフォルトのログ出力のままがいい。 コントローラでconfigのlogレベルをいじろうと思ったんだけど、 configなんてのは知らないって怒られちゃった。 動的にconfigいじるのは無理なのかな。 loggerのレベルはinfoでやってます。 あとは、ログレベルをwarnにして、必要なログを手で入れてくかだな。。。
Rails.logger.level = Rails.logger.class.const_get(:FATAL) 3とか4とかベタに書いてもいいけど。
730 :
728 :2010/01/23(土) 18:27:59 ID:???
>>729 ありがとうございます。
configの動的変更できました。
ただ、途中までのログが出てしまいました。
ファイル管理のコントローラに以下追記。
before_filter :set_log_rebel_warn
Processing FilesController#show (for 127.0.0.1 at 2010-01-23 18:18:40) [GET]
・・・
このログを出してるところの前でクリアするか、
出そうとしてるログを消すようにしたらいけるかな。(出来るのか?)
もうチョイ調べてやってみます。
助かりましたー!!
ActionController::Base#log_processing ActionController::Base#log_processing_for_request_id ActionController::Base#log_processing_for_parameters あたりをFilesControllerでオーバーライドしてみるとか。
>>707 707に同情するよ。Rails以上にSproutCoreでUIを書くのが大変だと思う。
多分テスト無いよね?なかったらそれこそ地獄だよ。
<%= link_to 'show', :action => 'show', :id => user %> <%= link_to 'destroy', :action => 'destroy', :id => user %> destroy クリックしたら show のページに飛ばされる 画面上の URL が両方 /usr/id になっとるしわけ分からん/(^o^)\
:method 指定したらできたよー <%= link_to 'destroy', { :action => 'destroy', :id => user }, :method => 'delete' %>
ブラウザがDELETEやPUTにまともに対応する日は来るのだろうか。
736 :
728 :2010/01/24(日) 09:31:59 ID:???
>>731 ActionController::Base#log_processing
をオーバライドでいけました。
ありがとうございます。助かりました。
いやしかし、rorはいいですなー。楽だー!!
django も忘れないで~
ど・・・Django
739 :
707 :2010/01/24(日) 15:24:37 ID:???
>>725 ご指摘ありがとうございます。
sroutcoreのバージョンを0.9.11に戻したらビルドできました。
が、ビルド後出来上がったrhtml,jsファイルが本番と別物の欠陥品でした。
ビルド環境が腐ってるのか、ソースが腐ってるのかわからない状態です。
作成者にVMWareで環境(Macらしいです)もらうことも考えてますが、
PHPでその部分だけ一から作り直すことになるかもしれないです。
もともと社内で使う生産管理システムで、あまりリッチなUIは必要なく
遅い、ブラウザが落ちる等評判もよくないみたいなので。。。
>>732 >707に同情するよ。Rails以上にSproutCoreでUIを書くのが大変だと思う。
ですね。
最初何が何やらわからなかったです。
ただ、大体当たりはついてて修正プログラムも作成はしてあります。
環境が構築できてないので確認は全く出来てませんけど。。。
>多分テスト無いよね?なかったらそれこそ地獄だよ。
テストはあるにはありますが、ユニットテストというよりは、
開発者が色々試した結果を置いてあるだけで、
後でソースを修正する人のためのではないかと。。。
ただ、ブラウザをプラットフォームにして、システム構築する手法に
触れたのは良かったです。
AJAXは、”サーバーとデータやり取りしても画面遷移しない技術”
程度の認識だったので新鮮でした。
将来主流になってくるかもしれないですね。
10年って、10年前がどんな状態だったか考えてのことか?
>>739 すごいなぁ、社内向けのシステムでSproutCore使うとか、
作り手のオナニーか、見積金額上積みのためとしか思えん。
フルスタックのUIフレームワークなら、まだしもdojoの方がメジャーだと思うし。
それに社内のブラウザが全部ChromeかSafariでも無い限り、
まずパフォーマンスに問題が出るとおもう。
Ajaxというか、正しくはJavascriptUIだと思うんだけど、
そういうのは技術的にもう普通だと思う。
GMailやGoogleReaderは多くの人が使ってるだろうし、
GoogleWaveもぜんぶJavascriptでできてる。
ただ、どうしてもコストがかかるので、
低予算の案件が多いWeb制作業界では浸透しないんだと思う。
PHPで一から作り直すくらいなら、Railsだけで作り直してみたらどうでしょうか。
Viewの作成と、Controllerの手直しだけで動くようになる気がします。
画面遷移ない方が低コストに出来ると思うけどなぁ
>>744 もしそうなら是非やり方を教えて欲しい。
デスクトップアプリみたいにFSMでGUIを作ろうとするとどうしてもテストが破綻する。
かといってテスト無しでGUIを作り込むと、あっという間にバグの温床になるし。
現状どうやってるのか、参考になるサイト・書籍などもあればお願いします。
その辺が整備されて実用になるのが10年後っていう意味かな
Dojoもそうだし、Extとか使うと、どうしてもJavascriptUI(というのか?)をメインにしないと、 Javascriptファイルの読み込み時間が長くて使えたもんじゃなかった。 だけど、Extメインにすると、Javascript側の記述がもりもりになって、 サーバ側のフレームワークがなんであってもほぼ関係なくなる、と思う。 Javaだろうが、Rubyだろうが、PHPだろうが。 Javascriptの技術(というか、使ってるJavascriptのライブラリの把握度)の方が重要になってくる。 俺はJavascriptってかなり難しい言語だと思ってて、人にはおすすめ出来ないので、 JavascriptUIは使わないようにしてる。 サーバ側の言語と、Javascript両方ともに熟知して貰わないといけないから。
749 :
nobodyさん :2010/01/25(月) 19:53:41 ID:zfSMIsHp
750 :
nobodyさん :2010/01/26(火) 06:56:48 ID:ATL7yxma
>>703 とか
>>706 も書いてたけど、最近出た Head First Rails って本が超読みやすくてわかりやすくてマジ感動した。
初心者は2ちゃんとか見てる暇あったらとりあえず全員これ買って読むがよいと思うんだ。
751 :
707 :2010/01/26(火) 10:01:38 ID:???
続報です。
製作者が元の環境を消してて環境再現ができない。
作り直しは受注元にダメと言われる、と完全にオワタ\(^o^)/
と思ってましたが、どうにかこうにかビルドできる環境を構築できました。
gemとsproutcoreのバージョンを変え、Javaインストールしてetc...
何とかなりそうです。
皆さん。色々とありがとうございました。
>>743 >作り手のオナニーか、見積金額上積みのためとしか思えん。
そうだと思います。金額でも揉めたみたいです。。。
>ただ、どうしてもコストがかかるので、
>低予算の案件が多いWeb制作業界では浸透しないんだと思う。
その点は同意ですが、JavascriptUIの使用者の本命は、
Web製作業界ではなくアプリ製作者だと思います。
ブラウザが今よりも安定・高速・多機能になり、クラウドが一般にも
普及したら、ブラウザ上でゲーム、アプリを作成するのが
主流になるんじゃないかなと。
その方が、ユーザーの負担が減り自由度があがりますし。。。
将来的にはアプリの起動は、OSからブラウザに移行する気がします。
>>707 は6,7年くらい前からタイムスリップしてきたのかと小一時間w
懲役7年
rails(linux)でmssql使いたいんだけど UnixODBC FreeTDS activerecord-odbc-adapter Ruby ODBC 入れりゃいいの? あとgemで見つけた activerecord-sqlserver-adapter って何?
そんな口の利き方のやつには絶対に教えない
ブラウザが高機能になって安定高速に成った歴史なんて無いしな。 シンプルイズベストで、余計な機能そぎ落としたほうが高速安定すると思うよ。 もうJSとHTMLの拡張辞めればいいw みんなでHTML1.0に戻ろうw ゲーム、アプリは普通にjavaで組むのが、グーグル携帯の先に有ると思うよ。 googleクラスのハカーでもchromeブラウザ上で全て実行させるなんて言い出してないし。 犬上で動くodbc-mssql driverが無いと思うw jruby経由でjdbcでごにょごにょでもすれば? mssql捨てるのが一番だが。
ここでいいのかどうかわからないのですが。 linodeでRailsを動かしている方いらっしゃいませんか。 どのプランで、どういう構成で、どのくらいパフォーマンスが出ているか 分かる範囲で教えていただけると助かります。 よろしくお願いします。
>googleクラスのハカーでもchromeブラウザ上で全て実行させるなんて言い出してないし。 Chrome OS
759 :
nobodyさん :2010/01/27(水) 12:57:30 ID:vbYrOD4B
html.erbでコメントを入れる場合、 <!-- コメント --> <% # コメント %> どっちでも一応コメントになりますが、どっちの方が正しいやり方でしょうか?
そもそも<!-- -->で囲んでも、ERBの視点ではコメントではない。 ERBはHTML以外の中にも書けることを思い出そう。 <!-- <% RUBY %> --> と書くと RUBY はRubyコードとして評価される ので、<%# %> にしたほうがよいと思う。 たとえば、 <!-- <% 1 + %> --> → Rubyコードが文法エラーになる。
あ、↑Rubyコードをコメント化する場合の話しかしてないや。 出力HTMLソースの中にコメントとして現れて欲しい部分は<!-- -->の中に。 Ruby評価中に解釈したくないRubyコード片は <%# %> の中で。
763 :
760 :2010/01/27(水) 22:03:08 ID:???
ありがとうございます。 なるほど…どのレベルでコメントになるかっていう違いあるんですね。そこまで頭が回ってなかった。 基本的には<%# %>でほとんど済みそうですね。 HTMLに残さなきゃいけないコメント、、、そんな場面はあり得るのかな?
764 :
707 :2010/01/28(木) 01:50:38 ID:???
>>752 古いっすか?私の考えw
まあ、Webを何年もやってきた同僚の意見は違うし、
私の見当違いである可能性は高いですね。
でもそうなると、ブラウザ上でシステム構築するのは
主流にはならない気がします。
ユーザーが望んでいるのは、付加価値よりも
安く・簡単・便利に使えることだと思うので。
ちょうどWEBメールが普及したように、
WEB画面がリッチになることには金出さなくても
安く簡単にダウンロード出来て、設定する必要もなく
どのパソコンでも動くアプリなら性能落ちても金出すでしょう。
でも本当に難しいでしょうね。そんなブラウザ作るのは。。。
>>756 >ゲーム、アプリは普通にjavaで組むのが、グーグル携帯の先に有ると思うよ。
そうなるでしょうね。
実際、携帯でアプリ作成するのが増えてきてません?
でも、スペックがPCに比較して落ちるのと、
結局、これまでのPC同様、機種依存が出てくるので
個人的にはブラウザに頑張ってもらいたいのですが。。。
765 :
707 :2010/01/28(木) 01:55:02 ID:???
スレ違いの話題を長々とすいません。 もう止めときます。 ちなみに修正まだやっとります。 もうこのプログラムやだw
HTML4.0以前、どれだけ苦労したか知らないバカがいるのか
>・ ブラウザでソースをみたら、ログイン画面なのに1万行近くソースがある。 わろすw ajaxもどきでもやってんだろうな jQueryのソース全部貼り付けたとかじゃないかw
>>768 おまえ
>>707 以降のレスを全く見てないだろ
ほかの影響を考えないで脊髄反射でプログラムを書き換えるタイプだな
770 :
nobodyさん :2010/01/29(金) 00:30:31 ID:SeyjXxxZ
771 :
707 :2010/01/29(金) 04:03:11 ID:???
>>769 ははは。まあまあ。
>>767 私が言いたいのは、宇宙開闢137億年の歴史に比べたら
納期を守れないやら、プログラムが読めないなどは
ほんの些細な問題だということです。
もうだめぽ。。。。
ちょっと質問、Rails 2.3.5のプロジェクトなんですが、 国際化は特に考えないで作ってきたんですが、 プラグインが英語で国際化考えてない感じで手を加えたいんですが、 プラグインの国際化ってどうやるものなんでしょう? i18nとかを使うんでしょうか? この辺はどこらの資料を見ればいいですか? 今は英語の部分を日本語にべた書き換えでリリースでも別にいいんですが、 後で英語のプラグイン本家にパッチ送って反映してもらいたいときに、メッセージを国際化しときたいんです。
そのプラグインの名前は?
おれもそうオモタ
775 :
nobodyさん :2010/01/29(金) 22:55:58 ID:azIwv80e
ちゃんとi18n実装してくれるなら助かるが、なんちゃって日本語実装だとみんなが不幸に成るだけ。 そういう中途半端な日本語対応パッチでみんな苦しんで来てるし。 PC用のUTFと携帯用のSJISとメール用のJISぐらいはまともに実装しないとねえ。
自分でプラグイン作ればいいじゃん そんな大変なことではないんだが
railsのwebサーバをどうしようか悩んでる。 passengerが楽でいいんだけど 将来的に、ec2でスケールアウトさせることを考えると apache(ngjinx/lighttpd)+mod_proxy_balancer+mongrel_cluster とかの方がいいの?
まずはそこまで支持されるサービスを作りなさい
>>779 確かにそうなんだが
ec2に乗せるの前提で話がすすんでるんだ。
猛者はおらんかのぉ。wakame便利そうだけど、正式リリースまだだし。
Rackの価値ゼロだな
うちの会社はrails使うときはapache以外選択肢無いなぁ
テーブルのフィールドの説明ってさ, マイグレーションのファイルにかくべき? モデルに書くべき?
WordとかExcelとか カラムの意味を調べるのに毎回ソース嫁とか言われたらたまらん
せっかくのアジャイル思考フレームワークなのに DB構造変わるたびに毎回Excel編集しろとか言われたらたまらんな
編集するのは1人、閲覧するのはN人 どちらを優先すべきかは言うまでもない それにそんなにコロコロ構造は変わらん 変わるのなら最初にちゃんと設計しないから デスマでよくあるけどな
>>786 > 編集するのは1人、閲覧するのはN人
え?え?
>>783 まず、マイグレーションでもモデルでもいいがソース上に書いておくべきだと思う。
開発中はソースだけ見れば済むようにしたい。
ソースだけでは分かりづらいなら補足資料は必要だけども。
テーブル定義書は納品物として必要だけど、ドキュメント類は開発が終了してから提出するという事で顧客と事前に約束を取り付けておく。
開発が終了したら、CSEなどのツールで自動生成。そのファイルに日本語の説明を書いていく。
っていうのが自社のやり方。
仕事のスタイル次第だね うちは自社サービスだけだからドキュメント自体ほとんど存在しない。
790 :
772 :2010/01/30(土) 19:17:19 ID:???
テストケースに書いておくのがBDDであり RSpecやCucumberだろう
792 :
772 :2010/01/30(土) 19:18:37 ID:???
DataTablesってすごいねぇ。 phronos'sってどうゆう意味だろ?
phronosさんの作ったrails_datatablesってこと。 GitHubのプロジェクトトップページのタイトルは、 <author>'s <project-name> at master - GitHub となる。
なお、masterは、あるgitリポジトリのデフォルトのブランチのこと。
parents, childrenというテーブルがあったとして parents...id, child1, child2というカラムを持っている。それぞれchildrenのidが入る children...id, parents_idというカラムを持っている このようなときに、ある時はchild1を、ある時はchild2をキーにして has_manyでのテーブル結合を切り替えたいのですが、こういう方法は無理なんでしょうか 今は両方ともhas_manyでparentsに追加しているのですが、切り替えができたら嬉しい
797 :
nobodyさん :2010/02/01(月) 17:47:36 ID:/Gi8FxAx
どこまで必死なんだよ 宣伝うぜぇ死ねよ
>>796 parentsテーブルがchild1とchild2のIDを持っているということは、やりたいことは
parent.children1 や parent.children2 (Parent has_many Child)
ではなく
parent.child1 や parent.child2
であってる?
class Parent < ActiveRecord::Base
belongs_to :child1, :class_name => 'Child', :foreign_key => 'child1'
belongs_to :child2, :class_name => 'Child', :foreign_key => 'child2'
end
class Child < ActiveRecord::Base
has_one :parent
end
でいいと思ったんだけど、これじゃchild1とchild2のどっちで結合すればいいか
特定できないからchild側からはparent参照できないのか。
(has_one parent1とかすれば可だけど)
>>798 実働報告なんてほぼ皆無なんだからこちらとしてはありがてーわ。
自治棒は消えろ
>>799 :class_nameというのがあるんですね。なんとかできそうです
ありがとうございます
802 :
nobodyさん :2010/02/02(火) 20:25:53 ID:tGNPNfj/
803 :
nobodyさん :2010/02/02(火) 21:05:33 ID:tGNPNfj/
2系から何が変わるんだろ…十分完成されたフレームワークだと思ってたのになぁ
フレームワーク本体を選べるようになるんじゃないの? 中心部分をRailsでつくったり、Marbでつくったりとか。 多機能にしたいならRailsで シンプルにしたいのならMerbでとか
RailsってCでいうmakeファイル書き上げるような物なんだな scaffoldコマンドを実行したら基本的な骨組みができあがるかと思ってたよ ruby script/generateってコマンド打っていても意味を理解していなかったよ。 またscaffoldで作成しちゃったら戻すことは出来ないようだな。 タイムスタンプを利用したファイルをどんどん作って行くみたいだけど 人の手でソースに手を入れた後に、コマンド実行しても大丈夫って事かな?
え?
808 :
nobodyさん :2010/02/03(水) 02:55:16 ID:YvzJimsv
810 :
nobodyさん :2010/02/03(水) 05:54:39 ID:YvzJimsv
811 :
nobodyさん :2010/02/03(水) 05:56:32 ID:YvzJimsv
ruby script/generate scaffold ******** うごかない。 rake db migrate うごくようになる。
Rails 3リリースオメ!!
>>797 こういう事例は紹介してもらえるとありがたい。
しかし、ホストOSがWindowsの仮想マシンでまともに動くのかよw わろた
>>806 scaf
>>806 ごめん、途中で送信しちゃった
makeは関係ないよ。
makeをruby用にパクッたrakeのRakefileとかはrailsにもあるけど、それのことじゃないでしょ?
多分、宣言的に書くところが多いのでそう思っているだけだと思う。
.rbとか.erbはRubyのスクリプトだよ。ちゃんとした言語だよ。
ライブラリがいろいろやってくれるから、宣言したっぽくかけるけど、ちゃんとスクリプトはそことおっているよ。
scaffoldで作成したのを消すのは、destroyつかえばいけるはずだよ。
ruby script/destroy scaffold ********
その辺のことはrailsガイド読んでね。
Ruby on Rails guides
http://guides.rubyonrails.org/ 後は書籍読むとか。最近は Head first のrailsのがオススメらしいよ。
> タイムスタンプを利用したファイルをどんどん作って行くみたいだけど
これはよくわからん???
同じscaffoldを実行しても、編集した後は上書きしようとしていちいち聞いてくるのは危ないからそうなっているとしか
>>814 >> タイムスタンプを利用したファイルをどんどん作って行くみたいだけど
>これはよくわからん???
migration スクリプトのことかと。
>>815 あれ?リリースノートでただけなのか。失礼したw
てすと
ちょっとした質問です。 unko_chinkoヘルパーが定義されていた場合に、 コントローラーからunko_chinkoヘルパーをどうしてもどうしても呼びたくなった場合、 コントローラー内で以下のように書くと思いますが、 ApplicationController.helpers.unko_chinko ApplicationControllerコントローラー派生のコントローラーなら、 self.helpers.unko_chinko でいけそうなものなのですが、これではundefinedと言われてしまいます。 これはなんでなんでしょうか?
ヒント ApplicationController.classは何でしょう。 また、その文脈でself.classは何でしょう。
どうでもいいけど >コントローラー内で以下のように書くと思いますが、 >ApplicationController.helpers.unko_chinko helper :unko_chinko じゃね?
俺がRails3に一番期待することはサーバーのメモリ節約なのだが あまりそういう方向には進まなかったみたいね 1年ぐらい前はめちゃくちゃメモリ節約できるようになるとの触れ込みだったのに
>1年ぐらい前はめちゃくちゃメモリ節約できるようになるとの触れ込みだったのに え?
っつーか Rails つかってるとすぐメモリ使い切って 数日に一回は再起動しないといけなくなるw
railsでメモリ効率とか… 元がrubyなんだし速度とかメモリとか期待しちゃ駄目だ
>>827 でもさ、ここ数年のシェアの伸び悩みは激安共用レンサバではロクに動かせないからって思わない?PHPみたいにさくらの共用でも動かせるようになれば皆もっと飛びつくのに
いや2000円台で快適に動かせる 2000円台というと少し高いように思えるが、本質はRailsで動かしたいアプリがないからだと思う 本当に動かしたいアプリがあれば普通にそれくらい出すと思うよ やっぱり 利用者>>>>>>開発者 じゃないとな
海外 VPS なら $6/month くらいからあるよ
いや違う PHPの偉大なところはFTPでアップすればそれだけで動くところ railsもpassengerのお陰でだいぶ楽になったけど、それでも差は歴然としてる
834 :
nobodyさん :2010/02/04(木) 20:57:57 ID:G38u6Z+m
835 :
nobodyさん :2010/02/04(木) 21:07:01 ID:G38u6Z+m
836 :
nobodyさん :2010/02/04(木) 22:44:09 ID:G38u6Z+m
837 :
nobodyさん :2010/02/04(木) 22:53:36 ID:G38u6Z+m
>833 ダウト。PHPでも設定は必要。 Rails だってあらかじめ設定しておけばFTPなりなんなりでアップロードすれば使える。 このご時世でFTPなんでありえんと思うが。
WordpressがRails製だったら、こぞってサポートされるだろうよ
>>837 実際メインテナンスを依頼されてソースを見たら
ループじゃなくて数行x1000回(一部パラメータ値だけ変えて)繰り返してあるのを見たことがある
>>839 いやいや、そういうことじゃないよね
実際問題railsアプリをそのままあげて動かせる共用サーバがどの位あるんだって話で。無いに等しいよね。
VPSなら余裕じゃん 最近は安いしひもじい学生でも何とかなるだろ どんだけ貧乏なんだ
>>843 俺は仕事とプライベート含めてむしろ大量に借りてる。でもそんな話をしてるんじゃない。
railsの実行環境がPHPに比べれば敷居が高いことがネックになり続けてて、それはrailsにとって不幸じゃない?ってことが言いたい。
VPSなら可能ってそりゃ当たり前だよ。でも世間でPHPのシェアを支えてる一部の層はrootを持ってサーバー管理などできやしない。
彼らはアプリ開発はできてもサーバーの運用知識はない。
railsの欠点はサーバ管理技術が要求されることが多すぎると思うんだ。
cakePHPなんてサーバーの知識必要ないからWebアプリ層しかわからない開発者でもさくら共用あたりで手軽に動かしてるよね。
それこそFTPで上げるだけで動く。差は歴然。
う〜ん結局何が言いたいのかよく分からん。 個人的にそういう底辺層をRailsに取り込みたいとは全く思わない。 Railsの開発者は現状でもやる気満々だし、自分も満足してるし。 初心者でも誰でも使える、みたいな触れ込みで宣伝されるのが一番嫌だな
>845 同意。
railsの運用は現実的じゃないと思うけどな。 一応、php見たいに使えるよというだけで。 だから、rails案件からjavaへの移行が多い。
一応初心者ですが UbuntuServerを利用してRubyの野良ビルドからApacheでRails動かせるまで 構築してみました。 自分なりの結論だと、はっきり言って不親切というかgemが凶悪すぎたりして 運用が現実的じゃないとまでは言わないまでも、フレームワークと名乗る以上 運用までのプロセスをもう少し簡便にする努力は必要だと思います。
具体的に何が不満なんだよ
>>849 え?え?
なんか前後の文がつながってないような…
railsからPHPへの移行が多いっていうならわかるけど。
>>850 楽なフレームワークが欲しくて
PHPやPerlが嫌なら
RubyじゃなくてPythonの方がお薦め
ど・・・Djangoは日本語ドキュメントがほとんど無いので二の足 ほんとはRubyよりPythonのほうがすきなんだけど
856 :
nobodyさん :2010/02/05(金) 20:38:33 ID:5PrgsIzR
今度は本当だね。
雑魚は放っておいて先へ進もう
859 :
nobodyさん :2010/02/05(金) 21:39:50 ID:5PrgsIzR
なんで ― が ? に化けてるんだよ。
861 :
nobodyさん :2010/02/05(金) 21:43:56 ID:5PrgsIzR
862 :
nobodyさん :2010/02/05(金) 22:47:51 ID:5PrgsIzR
このスレの人は排他的だなー Railsを使う人が増えるのは素晴らしいことですよ web上の情報や書籍も増えるし開発だってもっと進む 目玉の数は多ければ多いほどいいんです 底辺も含めて使う人が増えれば増えるほどその言語/FWの環境が良くなるということは 昔のPerlや今のPHP、そして海外限定でPythonが証明していませんか?
864 :
nobodyさん :2010/02/06(土) 00:15:42 ID:sFPKz/Gl
まあ日本はガラパコス島だしな。世界の流れに取り残されまくり。 世界ではphp5+mysqlが主流なのに、php4+postgresだったりするし。いつも周回遅れ。
866 :
nobodyさん :2010/02/06(土) 02:53:40 ID:YL0PbaBD
質問です
最近railsの勉強を始めました。手始めに
Ruby のブログを 10 分で作成
http://netbeans.org/kb/docs/ruby/rapid-ruby-weblog_ja.html?print=yes に挑戦しているのですが、ユニットテストでつまずいています。
rakeのdb:test:prepareを実行すると
rake aborted!
Task not supported by 'jdbcmysql'
というメッセージがでて、エラーになってしまいます。
環境はNetbean6.8 rails2.3.4 Jruby1.4 MySQL5.1.42 です
解決策をご存知の方がいらっしゃいましたら、教えてください。
もうすぐ仕事で使うので、できればTDDをやりたいのですが、困ってます。、
867 :
nobodyさん :2010/02/06(土) 03:04:04 ID:WHjoDDD7
>個人的にそういう底辺層をRailsに取り込みたいとは全く思わない。 これは酷い 君が誰だが知らないがたとえDHHだったとしても賛同できない発言だな そもそもRailsってwebアプリケーション・フレームワークだろ アプリ層以外のところにエンジニアが気をとられすぎてる現状は改善されるべき
868 :
nobodyさん :2010/02/06(土) 03:25:02 ID:sFPKz/Gl
ruby\rails\hello>rails generate controller hello ruby/lib/ruby/gems/1.8/gems/railties-3.0.0.beta/bin/rails:2:in `exec' : Exec format error - ruby/rails/hello/script/rails (Errno::ENOEXEC) from ruby/lib/ruby/gems/1.8/gems/railties-3.0.0.beta/bin/rail s:2 from ruby/bin/rails:19:in `load' from ruby/bin/rails:19
底辺層がRails使ってくれないとRails案件が増えないんだよなあ 増えないどころか周りに合わせてPHPなんぞやらされたら死にたくなるよ
870 :
nobodyさん :2010/02/06(土) 05:32:26 ID:WcJ7lKTj
5行でrails3
$ rails example
$ cd example
$ ruby script/rails generate scaffold todo title:string body:text done:boolean due:datetime
$ rake db:migrate
$ ruby script/rails server
http://localhost:3000/todos/
>>866 10分で出来なかった事実を重く受け止めろ m9
>>855 Railsも日本語の「まともなドキュメント」は少ないぞ
>>866 jdbcmysqlアダプターで一部の操作が未サポートだって言われてる。
rakeを-t付きで実行して、どのタスクが未サポートか確認。
874 :
nobodyさん :2010/02/06(土) 09:42:28 ID:sFPKz/Gl
About your application’s environmentRuby version 1.8.7 (i386-mswin32) RubyGems version 1.3.5 Rack version 1.1 Rails version 3.0.0.beta Active Record version 3.0.0.beta Action Pack version 3.0.0.beta Active Resource version 3.0.0.beta Action Mailer version 3.0.0.beta Active Support version 3.0.0.beta Middleware ActionDispatch::Static Rack::Lock Rack::Runtime Rails::Rack::Logger ActionDispatch::ShowExceptions ActionDispatch::Callbacks ActionDispatch::Cookies ActionDispatch::Session::CookieStore ActionDispatch::Flash ActionDispatch::ParamsParser Rack::MethodOverride ActionDispatch::Head ActiveRecord::ConnectionAdapters::ConnectionManagement ActiveRecord::QueryCache
875 :
nobodyさん :2010/02/06(土) 09:43:44 ID:sFPKz/Gl
About your application’s environment Ruby version 1.8.7 (i386-mswin32) RubyGems version 1.3.5 Rack version 1.1 Rails version 3.0.0.beta Active Record version 3.0.0.beta Action Pack version 3.0.0.beta Active Resource version 3.0.0.beta Action Mailer version 3.0.0.beta Active Support version 3.0.0.beta Middleware ActionDispatch::Static Rack::Lock Rack::Runtime Rails::Rack::Logger ActionDispatch::ShowExceptions ActionDispatch::Callbacks ActionDispatch::Cookies ActionDispatch::Session::CookieStore ActionDispatch::Flash ActionDispatch::ParamsParser Rack::MethodOverride ActionDispatch::Head ActiveRecord::ConnectionAdapters::ConnectionManagement ActiveRecord::QueryCache
gem bundler でgemの管理は楽になるのかなー。 今はcomfig.gemで管理してもgemがうまく動かなかったりして 結局pluginにして入れる事も多いので。
Zed Shawって最近何やってんの?
>>876 今はgem bundleというgemのサブコマンドではなく、独立したbundleという
コマンドになってる。
0.9以降でそれまでとだいぶ変わったな。
879 :
866 :2010/02/06(土) 15:39:36 ID:YL0PbaBD
>>871 10分どころか10日も厳しい
>>873 まだコマンドプロンプトからの実行ができていないのですが
rakeのタスク一覧にはdb:test:prepareがあります。
いろいろ調べても、db:test:prepareはさらっと流されてるので
できないほうが珍しいのかな。
最初のソースはグダグダになるのが目に見えているので
テスト駆動にしといて後で直したいんですけどねぇ
jrubyをやめるのが一番簡単なんじゃないかねえ。
とりあえず、 1. config/database.yml に設定を書く。 2. mysqlでアクセスするユーザーを作っておく。(grant) 3. 開発用DBを作る。rake db:create 4. テスト用DBを作る。 rake db:create RAILS_ENV=test db:test:prepareはそのあと。 mysql の前に sqlite3 でやったほうが楽だと思うけど、jrubyだとドライバないのかね。
netbeansの公式ドキュメントなのか、それ。 ちゃんと動作確認しながら書かれたものなんだろうか。
jrubyとか敷居高すぎだろ常考
884 :
866 :2010/02/06(土) 18:50:43 ID:O1uZpKfZ
>>880-883 レスありがとうございます
実は
rake db:create
rake db:create RAILS_ENV=test
も上手く言ってないです。エラーは出ないけどもDBも作成されて無いです。
ただ、Rubyのブログを10分で〜のページに、そういう場合は
「サービス」ウィンドウで、MySQL サーバーのノードを右クリックし、「データベースを作成」
と記述してあったので 手動で作成しています。
jruby、mysqlはnetbeansのデフォルトなので、そのあたりは触らないほうが
余計なリスクを背負い込まなくてすむと思ったんですけどね
とりあえず mysql⇒sqllite3 jruby⇒ruby でそれぞれ実験して
問題の切り分けをしてみたいと思います。
jruby やるならgrailsやったほうがいいんじゃない?
生rubyが好き。生がいい
>>884 最近JRubyで動作試したことあるけど、jdbcmysqlだとrake db:createとかが上手く動かない
必要ない限りJRubyは選ばない方が無難
db:create は初登場時から、全アダプタで対応しているわけではないって主張してたしなー。
889 :
nobodyさん :2010/02/07(日) 03:39:00 ID:lH6tE8FW
890 :
nobodyさん :2010/02/07(日) 04:07:15 ID:lH6tE8FW
Rails3のメリットは何?って聞かれたらなんて答えますか。 多分これから各所で聞かれるだろうから想定回答を用意しておきたい
>>843-845 確かに鯖管理が面倒というのはあるね。
フレームワークとは違うけどwordpressとかphpbbの作者はスクリプトの普及のため
その辺はものすごく意識しているみたい。
要するにレン鯖で動くようにすることに執念を燃やしている。
WordPressに見るオープンソースWebアプリに向いた設計とは - p0t
http://docs.komagata.org/2815 phpはmod_php動作はともかく、一旦普及してデフォで採用されているのがデカイんだろうなー
mod_php相当のpassengerはいいんだけど、いまいち普及してないよね・・・。
海外だとDreamhostあたりは入ってたと記憶
>>846 のherokuみたいにデプロイ簡単で、managedなサーバーはよいね。もう少し安ければいいけどw
ただ、無粋なので言うのやめようかとおもったけど、
動かそうと思えば、xreaとかcoreserverでCGI駆動でも動かせるよ?
どうせサービス作っても流行るかどうかはわからんのだから、人少ないうちはCGI駆動でも問題ないよ!
893 :
nobodyさん :2010/02/07(日) 10:05:09 ID:lH6tE8FW
cgiとかみんな重くて不幸に成るから辞めてくれw さくらのphpみたいにrubyも上位サービス契約しないと使えない様にされるだけだ。 まともに出来ないレベルで仕事に仕様というのは無茶だな。 そんなレベルで金受け取って仕事される客も困るだろうw
895 :
866 :2010/02/07(日) 20:54:16 ID:AwzzZZa9
あんま変わったことしない方がいいよ。悪く言えば寄せ集めなんだから Google App Engine とかもあったけど、「○○で動いた」みたいな報告は、 ごく一部の機能を動かしただけで、実際の開発には耐えられないんじゃないだろうか。
897 :
nobodyさん :2010/02/08(月) 13:58:49 ID:UWYpis5j
jrubyとrorはサン純正でもないと思うが。 サン純正でまとめるならちゃんとjavaで組んだほうがいい。 時代はoracle enterprise linux + oracle weblogic application server + oracle databaseかもしれないが。
rails3って2系とあんま変わらないらしいね。 一部の機能がモジュール化されて取替え可能になるだけか
GWT
jpmobileはRails3に対応してくれるんだろうか
先月に続き、今月またjpmobile会議があるっぽいから請うご期待。
903 :
nobodyさん :2010/02/10(水) 06:22:01 ID:F6Q2dOp+
904 :
nobodyさん :2010/02/10(水) 13:09:43 ID:L494lCPs
Rails事例ではないかもしれんが、参考になるな。 しかし、開発環境がRDEの男の人って・・・
sakuraで15000pv/日のサイト動いてるよん
907 :
nobodyさん :2010/02/11(木) 12:56:06 ID:d9Kyh7+c
自社サイトのPVを計算してみたら、119,932pv/日だった(1月分)。 Webサーバ1台、DBサーバ1台。 それぞれ専用サーバで、メモリは4GB。CPUはCore2DuoT8100。サーバ1台あたり月額14,700円 Apache + mongrel + PostgreSQL8.3。 Rubyのバージョンは1.8.7。 稼動年数は4年くらい。
10万pv/月ベースは個人で作っても結構簡単に達成できるなぁ。 日ベース常時1万に乗っけるのが難しい。 自分のサイトはなぜか休日にアクセス数激減してしまう パフォーマンス意識しなきゃいけないほどのマンモスサイトを早く作りたい
909 :
907 :2010/02/11(木) 15:10:07 ID:???
>>908 上のサイトはPCサイトのみのアクセス数なんだけど、やっぱり土日や祝日はアクセスが減るね。
休日も見てもらえるようなコンテンツを用意しないといけないんだろうけど、今はアイデアがない。
ちなみに、1日で約11万pvだから、月だと11*31=341万pv。
当初は、月10万まで行くのも苦労したんだけど、簡単にいけるもんなのか・・・
スレ違い
911 :
nobodyさん :2010/02/11(木) 16:56:25 ID:XTMQuQu/
ミニブログの Twitterのstats(統計)データ。
http://kaworu.jpn.org/kaworu/2008-01-16-2.php - 350,000を超えるユーザ。
- 秒間600リクエスト
- 平均毎秒200-300コネクション。最大時は秒間800コネクション
- MySQLは秒間2,400リクエストを処理する
- 180のRailsインスタンスがある。MongrelのWebサーバを使っている。
- 1つのMySQLサーバ(1つの大きな 8コアのサーバ)と1つのスレーブ。スレーブは、統計とレポートのための読み込み専用(リードオンリー)。
- 雑用処理をするための30+のプロセス
- 8台のSun X4100s
- Railsでのリクエストの処理時間は200 msec
- データベースにかかる時間の平均は、50-100 msec
- 16GBの memcached
912 :
nobodyさん :2010/02/11(木) 17:09:17 ID:XTMQuQu/
DBを中心としたデータアクセス周りは手を抜いて作るとバカみたいに遅くなるからな ツイッターのエンジニアもそのあたりの失敗を認めてたような ここまで使われると思ってなかったんだろうけど
railsでkeyvalue型のDBって使えないの?
916 :
nobodyさん :2010/02/12(金) 06:49:51 ID:GlKVK1JQ
単にActiveRecord使わなければいいだけ というか今もmemcachedとか普通に使われてないか?
TokyoTyrant、Roma、Kumofsなどなど好きなの使えばという感じだが。
URL helper関数をRails Consoleから確認することはできますか? StoryモデルとStoriesコントロールがあったとして、 >stories_path (/stories を期待している) としても、そんなメソッドはないと言われてしまいます。
UrlHelperというのは別途存在するので確認だけど、 map.resourcesで作られるURLを表すメソッドだよね? ActionController::Routing::Routes.install_helpers して helper.stories_path かなー と思ったんだけど、違った。 認識されるURLパターンを見るだけなら rake routes でいいんだけど。
>>919 レスありがとうございます。
はい、map.resourcesで作られる4つの関数です。
結局、protectedメソッドらしく確認できないっぽいです。
paperclipで画像登録する時、ファイル単位じゃなくてフォルダ選択して中身を一括登録ってできる?
ブラウザの<input type="file">に、ディレクトリを指定すると その中身をごっそり送るような仕組みが出来ない限り無理じゃないか?
923 :
921 :2010/02/13(土) 01:09:26 ID:???
>>922 昔作ったやつでフォルダ一括って出来たんだけど、
確かDBにバイナリで格納してたから重かった気がした。
最近paperclipって知ったからコレは!って思ったんだが…
会社行ったら前どうやって作ったのか確認してみます。
フォルダ一括ってブラウザにそんな機能あったんかw
「一括アップロード jquery」とか「一括アップロード JavaScript」とかぐぐればいろいろ出てくるけど、
フォルダ一括はそもそもブラウザに機能ないから、何か工夫しないといけないはず。
↓フォルダは無理だが複数一括ならこんなのとか
MOONGIFT: ≫ 華麗にアップロード「SWFUpload」:オープンソースを毎日紹介
http://www.moongift.jp/2007/07/swfupload/ って公式サイト死んでるがな・・・
あとはzipで圧縮したのをアップロードして、サーバー側で展開とか。一手間増えるが
なるほど、JavaScriptだと、1個ずつ選択してストックしておくしかないけど、 Flash(ActionScript)を使えば一度に複数選択できるのか。
927 :
nobodyさん :2010/02/14(日) 13:54:20 ID:6lVOAOxG
どなたか教えてください。 link_to_remoteを使って「ほげ」をクリックすることで"hoge"の内容が 書き変わるようにしています。 <%= link_to_remote 'ほげ', :update => "hoge", :url => {:controller => 'foo', :action => 'index'} %> <div id="hoge"></div> これをクリックとかの能動的な操作を必要とせずに、画面の初期表示段階で {:controller => 'foo', :action => 'index'}を実行させるようにしたいです。 何か良い方法はありませんか? よろしくお願い致します。
>>918 include ActionController::UrlWriter
>>927 function foo() {
<%= remote_function(オプション) %>
}
document.observe('dom:loaded', foo)
かな
930 :
nobodyさん :2010/02/14(日) 17:21:58 ID:6lVOAOxG
>>929 ありがとうございます。
おかげさまで、うまく実装できました。
当方、jQueryを使っておりますので以下のようになりました。
jQueryでdocument.observe('dom:loaded', foo)に相当するものを探すのに
時間が掛かってしまいました。
<%= link_to_remote 'ほげ',
:update => "hoge",
:url => {:controller => 'foo', :action => 'index'} %>
<div id="hoge">
<script type="text/javascript">
function foo() {
<%= remote_function(:update => "user_week_block",
:url => {:controller => 'user_week', :action => 'index'}) %>
}
$(document).ready(foo)
</script>
</div>
いやprototype.js使えよrailsなんだから…
>>931 まあ、ありでしょ。jQueryもメリットある。
remote_function 使うんだからPrototypeもロードしてるはずだけど。
jRailsつかえばいいのでは
>>930 なんかコントローラ名とか漏れてるぞw
week blockって
よほどUIに凝ってるサイトでもなければjquery使うメリットなんて無いと思うぞ
web-app-themeをうまいこと使う方法ありませんか? タグにいちいち :class => "label" ってやるのは DRY じゃないと思い alias_method_chain で FormHelper のメソッドをオーバーライドしようと label メソッドだけは上書きしてみたんですが これを、text_field やら form_for やら同じようにやってくのは これまたDRYじゃないと思い、そこでいきづまりました :class が nil ならタグ名をクラスとする、スマートな方法があったら教えて下さい
937 :
936 :2010/02/14(日) 21:36:39 ID:???
自己レス groundworkなるプロジェクトテンプレートが参考になりそうですね Windows環境だと使えなさそうなので、Linux環境構築中…
>>935 状況と好みによって選択だな。
jQuery は動的に DOM をバシバシいじるのは確かに楽だ。
配列や文字列なんかのユーティリティ系は Prototype のが素直に書けるよね。
JS名前空間汚したくない人はjQuery好き
俺レベルになると生でjavascript書く方が楽だ
おれもヘルパー使う気にならん 結局生で書くことになったりするから、混在させるのが嫌だなあ
このスレ的にRails3のunobstrusive javascriptはよいもの?
unobtrusive ですた… 他のフレームワークで結構採用されてんのね。
railsって自動で負荷分散もしてくれるの? もしできるなら勉強してみるかな
946 :
921 :2010/02/15(月) 16:20:19 ID:???
前作ったの見てみたら、あらかじめ設定したフォルダに 入ってる複数の画像ファイルをjavascriptで持ってきてた。 1年以上前に書いたモノだから今見ると欠片もワカラン。 paperclip使って1ファイルづつ登録するしかないかな… 3000ファイルくらいあるけど
947 :
nobodyさん :2010/02/15(月) 18:42:58 ID:9Iqj2ojJ
>>947 なんという薄っぺらい内容・・・
「続きは本で!」メソッドだな。
薄っぺらいっつーかどこかのヘルプを丸写ししただけじゃね 何で☆付いてんだろw
Rails3っていつリリースされるんですか?
ソラ少年はべつにHead First Javaの翻訳者でも何でもないんだから 別にメソッドと呼ぶほどのものではなかろう。 あ、でもアフィは入ってくるのか。
自演キモ過ぎ
>>951 ありがとうございます。まだβでしたか。
新サービスをRailsで作りたいのに3を待つか2で行っちゃうかでウズウズ…
βはちょっと見ただけだが、 * モンキーパッチするなど、実装の深いところを触るのは避ける * プラグインは全滅するので使わない というレベルでとりあえず2.3.5で作りはじめておくくらいなら、大丈夫かも。
実運用するなら2.3.xがいいんじゃないだろうか たぶんそれなりに開発できるようになるには半年くらいかかるように思う リリースが大幅に遅れたプロジェクトは要注意。勉強なら平行してやればいいし
Windows上でRuby1.9とした場合 サーバーはどれがいい(動く)の? Mongrel? LightTPD? thin?
958 :
954 :2010/02/16(火) 00:47:56 ID:???
>>955 >>956 ありがとうございます。参考になりました。
とりあえず2.3.5で行くことにします。
なんとかpid ってファイルを手動で消さないと起動しないことあるんだけど installの仕方間違えたのかな
検索、一覧っていう 簡単な流れの画面作ってんだけど 検索画面の入力チェックってcontrollerにもりもり書いていいの?
961 :
nobodyさん :2010/02/16(火) 15:12:55 ID:vr/Y6Irj
modelへ
>>960 検索ワードのことなら、俺ならコントローラに書く。
検索ワードの入力チェック的なこと、そんなにいらなさそう。
検索式の中に入れるならエスケープは必要だけど。
エスケープはモデルでやるべきだろ
964 :
960 :2010/02/16(火) 20:02:05 ID:???
コントローラはあくまでオマケで、 script/console でモデルだけ操作して アプリすべての処理が簡単に行えるのが理想だと思ってる
四階層モデルですねわかります
(´・ω・`)
controllerとmodelの間にサービス層が欲しい。 ある程度以上の規模になったら絶対必要だと思うんだけど皆はどうしてるんだろう。 独自に層を挟むのはアリなのかな?
アリでしょ。 app/modelsの中に勝手にクラス作ればOK
972 :
968 :2010/02/17(水) 00:36:13 ID:???
>>969 >>970 ありがとうございます。
>>969 こんなプラグインがあるんですね。参考になりました。
ただapp直下に新しいディレクトリ作るのは少し抵抗あります。。
>>970 独自に作る場合はmodels以下に作るべきでしょうか?
個人的には、サービス層はコントローラクラスに依存するからcontrollers以下に作った方がすっきりしそう。
例えばloginコントローラ内でabcモデルとxyzモデルを利用する処理がある場合、サービスクラスを保持するファイル名はlogin_serviseのようにコントローラ名に依存すると思います。
なのでcontrollers以下に入れた方が綺麗かなぁと。ほとんど好き嫌いの問題だけど。
サービス層はコントローラじゃないんだからcontrollers以下に作るのはおかしいと思うけどね。 サービス層はサービス層用にディレクトリ作って、まとめたらいいんじゃないかな
ごめん、ちょっとわかんなくなってきた。 Service / Model / Controller の役割を誰か例付きで解説して。
975 :
nobodyさん :2010/02/18(木) 16:38:59 ID:I3xk6O8m
>>969 これは、「層」というか、ControllerとViewに介在してシンプルにするパターン(って書いてあるけど)かなあ。
>>968 ,973,974
質問にもなるけどサービス層として切り出したいものって、
いわゆる「ビジネスロジック」ってやつかな、と思ってるんだけど合ってる?
データに属していない処理(複数のモデルが関わっていて、どのモデルにも置きにくい)で、
Webにも依存しないので単独でも起動できるようなものを、
「サービス」としてまとめたいのかなと思った。
(Railsの)ControllerはWeb依存なのでView間の遷移とかデータをViewにパスするとかを専門でやる。
俺のイメージはこんなん。
977 :
973 :2010/02/18(木) 23:36:13 ID:???
>>976 自分の言っているサービス層は、そういう意味だと思う。
モデルまたはサービス層はWebに依存しないようにして
runnerやconsoleで動作確認しやすいように作ってる。
とりあえず、今はlib/services以下にサービス層を作って置いてる
lib/services/sample_service.rbという感じ。
Services::SampleServiceという感じで名前が長くなるのがちょっと面倒だけど。
サービスを作る時の基準ってみんなどうしてるのかな。
自分は複数のモデルが絡むトランザクション処理とかだけサービスにまとめて、
単一のモデルで簡潔する処理は、そのモデル内に書いてる。
libに置くのは最悪だろ アプリケーションから取り外して再利用できるコードを置く場所
979 :
977 :2010/02/19(金) 02:48:31 ID:???
>>978 自動で読み込まれるところに置きたい
モデルとは区別したいので、app/models以外に置きたい
この2点で考えると、lib/serviceというディレクトリに置くのが手っ取り早いってだけで
今はそうしてる。
他にいい場所あったら教えて欲しい。
app/services以下に置く事にして、
environment.rbあたりにapp/services/*.rbをrequireする処理を書けばいいかな。
そのへんのためかどうか知らないけど、Rails3ではRails.root/app/ の下の ディレクトリが全部load pathに含まれるようになる。
そういうのはrorは弱いしな。 梅。
>>979 environment.rb に
# Add additional load paths for your own custom dirs
# config.load_paths += %W( #{RAILS_ROOT}/extras )
っていう箇所があるからそうすればいいのでは。
config.load_paths += %W( #{RAILS_ROOT}/app/services )
埋める前にそろそろ次スレ他てようぜ
984 :
nobodyさん :2010/02/19(金) 16:13:46 ID:WbFNhWFy
それじゃ埋め。
埋められまsrん。