トップページphp
986コメント359KB

【Ruby】Ruby on Rails Part8

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/09/13(日) 20:49:34ID:kz4rC4Dx
■前 Ruby on Rails Part7
http://pc11.2ch.net/test/read.cgi/php/1241100447/

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

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

■参考スレ(プログラム板)
Rubyについて Part 37
http://pc12.2ch.net/test/read.cgi/tech/1251029267/
Ruby 初心者スレッド Part 30
http://pc12.2ch.net/test/read.cgi/tech/1249687283/
0010nobodyさん2009/09/13(日) 21:24:33ID:???
>>7
ドキュメントにソースがついているところじゃないかな?

俺はRailsのchmしか使ってないけど、メソッドのところ見ると、該当ソースが見れる。
これがえらく便利。

わがまま言えば、該当ソース内で他のメソッドクリックするとそのソースも見れる、みたいなのだともっといいんだろうけどねえ…。
chmジャム陸際な
0011nobodyさん2009/09/13(日) 22:18:58ID:???
980くらいでも大丈夫
0012nobodyさん2009/09/14(月) 00:54:13ID:???
名前付きルートにモデルインスタンスを渡すソースをよく見ます。

@entry = Entry.new(params[:entry])
redirect_to entry_url(@entry)

みたいな感じです。
ネットなどで調べると、名前付きルートentry_urlの引数はidしか渡せないようなのですが、
モデルインスタンスが渡された場合はインスタンスからidを取り出すなどの特別扱いをされるのでしょうか?
001352009/09/14(月) 02:08:24ID:???
>>8-9
わかりました。
0014nobodyさん2009/09/14(月) 05:36:47ID:???
>>12
> ネットなどで調べると、名前付きルートentry_urlの引数はidしか渡せない
ハッシュも渡せるYO!!
entry_url(:id => 10)

こういう、引数の色んな渡し方が可能なメソッドは大抵
is_a? とか respond_to? を使って実行時型チェックをやってるので、
その一環としてモデルオブジェクトからは id を取得するようになっているのだろう。

ソース追っかけたわけではないので推測だけど、、、
0015nobodyさん2009/09/14(月) 09:54:44ID:???
>>7
このやり方ってどうするんですか?

0016nobodyさん2009/09/14(月) 10:30:34ID:???
>>12
url_forのドキュメントとソースが参考になるのではないかと
0017nobodyさん2009/09/14(月) 10:39:09ID:???
>>15
rdoc --inline-source(-S)
0018nobodyさん2009/09/14(月) 10:44:29ID:???
>>15
>>1 にあるRailsの公式APIリファレンスや github でホスティングされている
gem の rdoc なんかはそうなっているから、そっちを参照したら?

ローカルのgemや自作ライブラリのドキュメントを生成するなら
ひとまず rdoc の使い方を覚え、gem server などでググる必要があると思われる。

でも自分はあんまりローカルgemのrdocは見ないなあ、大抵guthubの方を見る
0019nobodyさん2009/09/14(月) 18:24:50ID:???
railsだとrake doc:railsってコマンドでもドキュメント作れるけど、このコマンドはみんな使ってないの?
0020nobodyさん2009/09/14(月) 19:19:32ID:???
どんなコマンドがあるのかわからん
コマンド一覧表作ってくれんかな
0021nobodyさん2009/09/14(月) 20:11:48ID:???
>>20
rake --tasks
0022nobodyさん2009/09/14(月) 20:16:10ID:???
zsh だと
rake <Tab> でコメント付きのタスク一覧を補完候補として表示してくれたりする
0023nobodyさん2009/09/14(月) 20:43:56ID:???
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に関連性が無くなる)
どっちのやり方が適切でしょうか?
0024nobodyさん2009/09/14(月) 21:23:58ID:???
>>23
個人的には polymorphic associationが好み。

あまり美しくないが、一応選択肢として:
Rails的にはSTI(Single Table Inheritance)がお手軽。
0025nobodyさん2009/09/14(月) 22:06:40ID:???
3つ目の案として、UserとRoleの2つのモデルで一般ユーザ、管理者を表現するのはどうかな。
rolesテーブルには一般ユーザと管理者のレコードを入れて権限マスタとして使う。
で、usersテーブルにrole_idを持たせる。


0026252009/09/14(月) 22:08:23ID:???
あ、失礼。
>>23のAと同じだった。


0027232009/09/14(月) 22:13:49ID:???
>>24
やはりrailsの場合polymorphicが良いのですね。
Single Table Inheritanceは知りませんでした。少し調べてみたら@でやる場合はすごく便利そう…validationもuserモデルに書くだけで良くなるからむしろAより綺麗かも?
polymorphicかSTIかでもうちょっと考えてみます。
ありがとうございました。
0028232009/09/14(月) 22:16:12ID:???
>>25
ありがとうございます。
Aとは違うような…3つテーブルを作らないということですよね?
0029nobodyさん2009/09/14(月) 22:18:10ID:???
Railsとか関係なしにAは駄目だろ
memberとadminを区別しないで扱いたい時とか破綻する
0030232009/09/14(月) 22:26:53ID:???
破綻しますか?Aの場合でもuserからmemberとadminを辿れるから問題無いと思うけど。
0031nobodyさん2009/09/14(月) 22:44:58ID: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 メソッドを使用している箇所はありません。
0032nobodyさん2009/09/14(月) 23:03:43ID:???
>>31
form_forでエラーになっているのであれば、form_tag使えばいいんじゃない?

<% form_tag(:action => アクション名) do %>
 <%= text_field(:hoge, :name) %>
以下略
<% end %>
0033nobodyさん2009/09/15(火) 00:21:30ID:???
>>23
わざわざ二つに分ける意味がわからん
なぜ二つに分けようと考えたんだ?
0034nobodyさん2009/09/15(火) 00:22:25ID:???
メンバーから管理者に変更するときとか面倒そうだな
0035nobodyさん2009/09/15(火) 00:24:43ID:???
userテーブルは要らないな。memberテーブルとadminテーブルだけあれば済むこと。
0036232009/09/15(火) 02:04:52ID:???
何度もすいません。
memberテーブルとadminテーブルに分けたのは、一般ユーザーと管理者ユーザーで必要なカラムが違うからです。
userテーブルを作ったのは、ログイン認証の時に一つのテーブルを見るだけで済むようにするためです。
restful_authenticationなどのプラグインなどを使う場合ユーザー認証のテーブルが二つあるとやっかいだと思いました。

>>34さんが言うように変更が面倒くさそうなので、userテーブルだけ作ってmember固有のカラムもadmin固有のカラムもuserに突っ込むことも考えましたが、
そうしてしまうと今度はmemberとadmin以外の種類のuserが必要になった時に大変だと思いました。
自分なりに考えた結果、userとmemberとadminの3つのテーブルを用意するのがいいと判断しましたが、一般的なwebシステムではこういう分け方はあまりやらないのでしょうか。
0037nobodyさん2009/09/15(火) 03:06:36ID:AVq3Mqvr
この流れの中、恥を忍んで聞くのですが、個人で作ってるシステムで、
「管理者=自分」と「その他ユーザー」という区別しかない場合、
特定のID(例えば 1)を持つユーザーが管理者、とハードコードしてしまうのって
どうなんですかね?

role を導入しようかと思ったんですが、
管理者か否かの二値を区別するのに roleテーブルも大げさかなと
0038nobodyさん2009/09/15(火) 03:43:36ID:???
accessor isadmin
0039nobodyさん2009/09/15(火) 09:01:10ID:Gt2owe1a
>>37
role導入でいいと思う。今は2つの値しか扱わないとしても、ハードコーディングするより全然いい。
0040372009/09/15(火) 12:30:53ID:???
>>39
ありがとうございます。
今後のことも考えて role を導入してみます。
0041nobodyさん2009/09/15(火) 18:06:59ID:???
roleってなんだ???
0042nobodyさん2009/09/15(火) 18:44:33ID:???
堂島role
0043nobodyさん2009/09/15(火) 18:57:55ID:???
質問があります。

バリデーションエラー時に、エラー箇所を赤く表示したいのですが、微妙に変な挙動になります。
<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
0044nobodyさん2009/09/15(火) 20:23:27ID:Gt2owe1a
>>43
divのままでも

div.fieldWithErrors {
display: inline;

}

こうすれば崩れなくなると思う。
0045nobodyさん2009/09/15(火) 20:28:15ID:???
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
0046nobodyさん2009/09/15(火) 20:31:02ID:???
  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'
0047nobodyさん2009/09/15(火) 20:34:49ID:???
長すぎて容量制限にひっかかる(泣

    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'
0048nobodyさん2009/09/15(火) 20:36:51ID:???
    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'
0049nobodyさん2009/09/15(火) 20:37:35ID:???
    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

これでエラーメッセージ終わりです。
ご助言いただけると幸いです。
0050nobodyさん2009/09/15(火) 20:41:44ID:???
>>44
やってみたのですが、<span>のときと同じように、
背景がうまく赤くならずに、textareaのときは下の方だけが赤くなったりしてしまいます・・・。
0051nobodyさん2009/09/15(火) 20:50:52ID:Gt2owe1a
>>50
とりあえず、デザインの崩れは解決したんだよね?
あとはcssを調整すればなんとかなるはず。

.fieldWithErrors textarea {

background: #ff0000;
}

で、いけないかな?
0052nobodyさん2009/09/15(火) 21:03:14ID:???
>>46
SFTPTransferWrapperの中でコケてるようだけど、うーん……
公開鍵の有無とかパスワード認証の許可状況とか?

0053nobodyさん2009/09/15(火) 21:28:04ID:???
突然ならディレクトリの容量が足りないんじゃなくて?
0054452009/09/16(水) 11:14:19ID:???
ありがとうございます。

書き忘れましたが、本番鯖の設定とテスト鯖の設定の切り替えにcapistrano-extというgemを使っています。

>>52
こちらでもソースを見ていたのですが、やっぱり、SFTPがおかしいのですかね…。
サーバー側のsshd設定何か弄ったかな…うーん。

本番サーバーにwinscpのSFTPで同じユーザーで適当な10MBくらいのファイルを何度か転送してみましたが、
問題ない感じでした。
capistrano側の設定なのかな…
ほぼ同じcapistranoの設定(ドメインとssh接続portのみ異なる)でテスト環境では問題ない点が?です。

sshは公開鍵を使っていますので、鍵の設定も見直してみます。pageantを併用していたはず

>>53
昨日、サーバーでdfで確認してみましたが、転送先のディレクトリ(/home/www/my_project)含むパーティション、
及びアーカイブ一時展開先の /tmpともに問題なく空いていました。

しかし、念のためもう一度確認してみます。
0055nobodyさん2009/09/16(水) 11:33:18ID:???
>>54
まさかとは思うが、root でログインしようとかしてないよね?
PermitRootLogin no で弾かれてるとか
0056nobodyさん2009/09/16(水) 18:38:05ID:???
Railsでmigration使わない開発ってアリでしょうか?
使い慣れたDB設計ツールからSQL吐きたいってのは邪道ですか?
0057452009/09/16(水) 19:23:55ID:???
>>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転送が可能なことは確認しています。
0058452009/09/16(水) 19:35:00ID:???
解決しました(`・ω・´)

sshdの設定がテスト環境と違っていたので、修正してみたところ無事デプロイが通るようになりました。

/etc/ssh/sshd_config にて、

ClientAliveInterval 15
ClientAliveCountMax 3

ClientAliveInterval 60

のように修正しsshdを再起動したところ、うまく行くようになりました。
他のsshクライアントでうまく行くから他の原因かと思ってました。

みなさまのおかげさまです。ありがとうございました。
0059nobodyさん2009/09/16(水) 20:28:55ID:???
>>56
ふつうにアリだよ。
0060nobodyさん2009/09/16(水) 21:34:48ID:???
普通にナシだろう。逆に手間かかるのがオチ
0061nobodyさん2009/09/16(水) 21:40:58ID:???
>>60
既存DBを使うようなものは作ったことがないんですね。
0062nobodyさん2009/09/16(水) 23:03:54ID: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

エラーメッセージの中に文字化けしている個所がいくつかあります。
0063nobodyさん2009/09/16(水) 23:05:46ID:hMTblvM+
エラーメッセージは以上です。
よろしくお願い致します。
0064nobodyさん2009/09/16(水) 23:35:15ID:???
>>60
幸せな環境で仕事してるんだろうなぁ。羨まし
0065nobodyさん2009/09/16(水) 23:59:26ID:???
>>62

excutable `svn' not present or not in $PATH on the local system!
ってことじゃんか?
ローカルとリモートでsvnが使える?


0066nobodyさん2009/09/17(木) 00:06:00ID:???
>>62
> ** [tyn-market.com :: err] svn: URL 文字化けしている ra_local 文字化けしている
> ** [tyn-market.com :: err] svn: 文字化けしている 'file:///L:/demo/branches/stable' 文字化けしている

これ、ディプロイ先でチェックアウトしようとしたときにsvnが受け取っている
リポジトリパスなんだが、たぶんローカルでチェックアウトするときのをそのまま
使ってるよね?

0067nobodyさん2009/09/17(木) 10:14:22ID:AsBV+oBz
vim-railsで変数の定義部にジャンプする機能ってないですかねぇ??
統合開発環境であるような。
そもそもvimではそういうのって無理なのかしらん。
エディタの話になってしまって申し訳ないですが・・詳しい方いたら教えていただけると幸いです。
0068nobodyさん2009/09/17(木) 10:28:36ID:???
>>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
0069nobodyさん2009/09/17(木) 11:19:40ID:???
railsで80000pv/日のサイト運営したいんですけど月何万ほどかかりますか?
0070nobodyさん2009/09/17(木) 11:58:28ID:???
PHP の 3 倍くらいかな
0071nobodyさん2009/09/17(木) 12:27:35ID:???
80000pv/日のコンテンツ(ネタ)を持っているだけでうらやましい
エロサイトかなにか?(悪く行っているのではありません)

技術を身につけても、プライベートではサイトを開くネタがないよ。
(本業が SE なので、仕事では顧客から請け負った業務イントラを Rails で作っているけど)
0072nobodyさん2009/09/17(木) 15:16:06ID:???
>>67
タグで飛べばいいじゃないの?
0073nobodyさん2009/09/17(木) 15:19:26ID:WSgiLhix
>>65, 66, 68
回答有り難うございます。Railsデプロイ読みながらやっているのですが、バージョン管理システムを使うのも初めてなものでして。。
"リモート"がリポジトリのあるLinkStationで、"ローカル"が開発作業をしているWindowsマシンで、"サーバ側"がデプロイ先のLinuxマシンという理解で良いでしょうか?

ご指摘の通りサーバ側からLinkStationにアクセスできる設定にはしておらず、ローカルでチェックアウトするときのパスがそのまま使えると思っていました。
ローカルのSubversionを使ってデプロイ先のサーバにアクセスしていると勘違いしていました。

サーバ側のSubversionは何か設定やリポジトリの作成??が必要なのでしょうか。手元にある書籍では殆ど触れられておらず、今ひとつ全体像がつかめずにいます。
何かあれば助言頂けないでしょうか。よろしくお願いします。

set :deploy_via, :copy も試してみようと思います。
0074nobodyさん2009/09/17(木) 17:54:24ID:???
サーバ側でsmbclientなどを使ってLinkStationのファイルを共有する設定にしても
よさそうね。
0075nobodyさん2009/09/17(木) 18:59:24ID:???
Rails3.0っていつ出るんだい?
0076nobodyさん2009/09/17(木) 19:40:34ID:???
年内にはβに到達しないと予測。
0077nobodyさん2009/09/17(木) 19:57:25ID:???
>>73
Fedoraの方にログインして
ssh でも http でも samba でもなんでもいいからやりやすいので LinkStation にアクセスできるようにして
$ svn ls リポジトリ
が通ればOK
set :deploy_via, :copy はサーバ側を弄らせてもらえない場合の最終手段かな
0078nobodyさん2009/09/18(金) 12:52:28ID: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

・・・。
この場合、どうすればインストール出来ますか?
ぶしつけですみませんが、教えて!エロい人!
0079nobodyさん2009/09/18(金) 12:56:06ID:ITCAk7dP
>>78です。
情報が足りてませんでした。

Windows XP SP3
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
gem 1.3.5

です。
0080nobodyさん2009/09/18(金) 13:16:48ID:???
zlib入れろ
0081nobodyさん2009/09/18(金) 13:56:09ID:ITCAk7dP
>>80 返信ありがとうございます。
調べてみたところ、zlibが存在してるんですが、別口で入れるものでしょうか?

C:\ruby\bin>ls zlib*
zlib1.dll
0082nobodyさん2009/09/18(金) 14:50:59ID:LN3EfzwI
>>74, 77
smbclientで共有してみましたが cap deploy 失敗してしまいました。

65さんのおっしゃる
>>excutable `svn' not present or not in $PATH on the local system!

このエラーメッセージが毎回出現します。意味がよく分からないのですが、どういうことでしょうか?
重ね重ねすみません。
0083nobodyさん2009/09/18(金) 16:35:16ID:???
>>82
svn コマンドが PATH から見つからないって言っているんじゃないの?
0084nobodyさん2009/09/18(金) 17:26:03ID:LN3EfzwI
>>83
WindowsでもLinuxの方でもsvnコマンドは実行出来るのですが、まだ何かパスを通さなければいけないのでしょうか?
それか、LinkStationにもSubversionをインストールしなければならないとかでしょうか。。
0085nobodyさん2009/09/18(金) 17:46:12ID:???
>>84
ディプロイ先にログイン(svnを実行できるケース)して
$ echo $PATH
$ which svn

次に、capistranoから
run 'echo $PATH'
してみたらどうなる?
0086nobodyさん2009/09/18(金) 18:21:16ID: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' というコードを記述すればよいのでしょうか?
間違っていたらごめんなさい。
0087nobodyさん2009/09/18(金) 18:36:03ID:???
あー、
$ cap invoke COMMAND='echo $PATH'
でいいや。と思ったが、/usr/bin/svn なら cap から実行したときも
見える可能性が高いな。

> excutable `svn' not present or not in $PATH on the local system!

んん、ローカル!?
0088nobodyさん2009/09/18(金) 18:51:18ID:???
>>84
> それか、LinkStationにもSubversionをインストールしなければならないとかでしょうか。。

え? LinkStation にリポジトリがあるって言ってなかったか?
0089nobodyさん2009/09/18(金) 19:16:52ID:???
>>84
>それか、LinkStationにもSubversionをインストールしなければならないとかでしょうか。。

file:でやってるなら不要。

0090nobodyさん2009/09/18(金) 19:19:19ID:LN3EfzwI
>>88
mkdir L:\demo
svnadmin create L:\demo

以上のコマンドを入力してリポジトリを作成しました。Windowsマシンからアクセスしているので、
LinkStationにはimportしたファイルしか置いてないです。。
0091nobodyさん2009/09/18(金) 19:20:45ID:???
L:はLinkStationで公開しているディスクをWindowsで見たときの
ドライブレターということでよろしいか?
0092nobodyさん2009/09/18(金) 19:25:55ID:LN3EfzwI
>>91
はい。
0093nobodyさん2009/09/19(土) 01:20:18ID:???
ruby script/generate model Blog name:string user_id:integer

generateスクリプトからマイグレーションファイルを作成する場合、カラムは型しか指定できないのですか?
ググってみてもドキュメント読んでもこんな感じの例しかない。
カラムごとに{:null => false, :limit => 100}みたいなオプションが使えると便利なのに。
0094nobodyさん2009/09/19(土) 04:02:31ID:???
>>93
generatorのテンプレート見れば一発でわかるが、名前と型のみ。
scaffoldのビューで必要な情報しか引数に取るようになってない。
0095nobodyさん2009/09/19(土) 05:19:30ID:???
>>93
> カラムごとに{:null => false, :limit => 100}みたいなオプションが使えると便利
全然便利じゃないと思うぞそれ
0096nobodyさん2009/09/19(土) 10:40:16ID:???
回答ありがとうございます。

>>94
なるほど〜やっぱりダメなんですね。
>>95
便利じゃないですか?
generate実行した後に、いつもマイグレーションファイルを修正するってのはRailsの精神に反してる気がしますけど。
0097nobodyさん2009/09/19(土) 10:58:04ID:???
>>96
じゃあ仮にカラムが20〜30あると仮定して
想定されるコマンドラインを頑張って書いてみてくれw
0098nobodyさん2009/09/19(土) 11:11:46ID:???
generate文で指定するのが大変な時は省略してデフォルト値にすればいいだけじゃないですか?
カラムが2〜3個しかないようなテーブルだってよくあることだし、そんな時はgenerate文で全部指定したくなる。
きめ細かく設定できるけど省略すればデフォルト値が用意されてるってのがRailsのスタイルだと思ってた。
0099nobodyさん2009/09/19(土) 11:36:25ID:???
そう思うなら直してpull requestでも投げとけ。
0100nobodyさん2009/09/19(土) 11:49:47ID:???
migrationを極力シンプルにして、バリデーションはモデルだけに書く派なので
今のジェネレータでとくに困ってないな
0101nobodyさん2009/09/19(土) 12:01:17ID:???
>>98
そんな generate が欲しいなら勝手に改造したら?
ただの rubyスクリプトだよ

で、すべての型の妥当なデフォルト値とやらを考えてみたらいいよ
0102nobodyさん2009/09/19(土) 12:24:18ID:???
型をデフォルトにするなんて誰も言ってないけど
0103nobodyさん2009/09/19(土) 12:35:58ID:???
確かに「誰も」言ってないw
0104nobodyさん2009/09/19(土) 12:47:51ID:???
「すべての型におけるオプションの妥当なデフォルト値」くらいか?
0105nobodyさん2009/09/19(土) 13:40:07ID:???
>>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文字(デフォルト)
みたいに定義できたら便利だと思う。
0106nobodyさん2009/09/19(土) 18:39:42ID:???
>>105
全く便利じゃない
0107nobodyさん2009/09/19(土) 18:41:51ID:???
generate文(笑)
DSL じゃねえっつーの
0108nobodyさん2009/09/19(土) 18:51:00ID:???
>>105
シェルのメタキャラクタがむき出しなんですけど
0109nobodyさん2009/09/19(土) 19:04:05ID:???
個人的には>>105の考え方に同意。まぁ人によって感じ方は違うだろうけど。
■ このスレッドは過去ログ倉庫に格納されています