トップページ⇒php
1001コメント389KB

【Ruby】Ruby on Rails Part7

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/04/30(木) 23:07:27ID:???
■前 Ruby on Rails のスレ が
http://pc11.2ch.net/test/read.cgi/php/1224838013/

■参考サイト
<英語>
本家: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 35
http://pc12.2ch.net/test/read.cgi/tech/1238194350/
Ruby 初心者スレッド Part 27
http://pc12.2ch.net/test/read.cgi/tech/1238632943/l50
0298nobodyさん2009/06/12(金) 13:04:00ID:???
>>297
ほんとに。Smartyわかってもダメなのか。

ヘルパーって調べるのとか結構時間がかかって
面倒とか思ってるのはおれだけだろうか。

でもあると使いたくなるし、後で使ってないところを見つけると直したくなる。
いっそごそっとなくなってくれれば楽なのかもとたまに思う。
相当役に立つやつは残してほしいが。
0299nobodyさん2009/06/12(金) 16:24:44ID:???
>>295
数人でやっている零細なんだろ
0300nobodyさん2009/06/12(金) 21:47:50ID:???
>>281
セッションにいれるのはparamsかな。
cookie storeだとあまり大きいのははいらないだよね?
0301nobodyさん2009/06/13(土) 03:57:58ID:???
そもそも論理的思考が皆無。
HTMLのタグとかも理解せずにDW弄ってる奴らだし。
ちゃんとALTタグ設定してるの見た事無い。orz
0302nobodyさん2009/06/13(土) 05:18:17ID:???
じゃあ、お前は彼らと同じようにデザインが出来るのか?
0303nobodyさん2009/06/13(土) 13:49:34ID:???
>>300
うちはactive record storeが多い。
cookie storeにした事はほとんどないかも

0304nobodyさん2009/06/13(土) 21:38:32ID:eLQY8eGW
Stringを拡張しようとおもうだけど、railsだとどこに書くのが適切?
0305nobodyさん2009/06/13(土) 22:13:41ID:???
拡張を定義したファイルを置く位置?
lib/string_ext.rb
かな。
0306nobodyさん2009/06/13(土) 22:51:14ID:???
lib以下でもいいし、こんな感じでプラグインにしてもいいかも。
vendor/plugins/string_ext/init.rb → (require 'string_ext'って書くだけ
vendor/plugins/string_ext/lib/string_ext.rb → Stringの拡張処理
0307nobodyさん2009/06/13(土) 23:08:45ID:???
config/initializers/に置くと自動的に読み込まれるけど、
「初期化」じゃないからきっと行儀が悪い気がする。
0308nobodyさん2009/06/13(土) 23:35:49ID:???
>>307
おれならたぶんそこに置く。というか実際置いてる。
使うときに何の宣言もいらないし。

初期化って「本処理が始まる前にやっておくべきもの」だから、
それほど行儀が悪いということはないんじゃないだろうか。
0309nobodyさん2009/06/15(月) 11:54:46ID:???
3.0の正式版はまだか〜?
はやくしてくれ〜
0310nobodyさん2009/06/15(月) 13:03:54ID:???
>>309
無茶いうな。

0311nobodyさん2009/06/15(月) 13:42:47ID:???
>>310
なんで?6月リリースを目指すってどこかで読んだ気がするけど
0312nobodyさん2009/06/15(月) 14:08:27ID:???
せっかく Rails 2.1.1 覚えたのに、
3.0 系列になったら、またごっそり変わるのか・・・・
0313nobodyさん2009/06/15(月) 14:09:49ID:???
>>304-308
自分は、config/environment.rb に、

class << String
 〜
end

みたいに再定義していたんだけど、この方法はお行儀悪いでしょうか?
0314nobodyさん2009/06/15(月) 14:16:41ID:???
Merbから高速化のノウハウを吸収するらしいじゃん。
おれは歓迎だけど。ただ1.9.1が出て少したったし、
Railsも3で少し落ち着いてほしいな。もうかなり充実してるし。
0315nobodyさん2009/06/15(月) 14:28:22ID:???
ttp://qwik.jp/asakusarb/010_log.html#179f851c7dd320f1cd5999d343e24f83
# Rails 3.0のRuby 1.9対応がひどい件
0316nobodyさん2009/06/15(月) 14:53:49ID:???
>>311

http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3
> The probably-overly-optimistic goal is to have at least a beta version ready
> for RailsConf 2009 in Las Vegas.

probably-overly-optimistic
beta

なお、RailsConf 2009 in Las Vegas は5月アタマだった。
0317nobodyさん2009/06/15(月) 16:53:13ID:???
>>313

environmentの意味を考えれば、
行儀が悪いというよりやってはいけないんじゃないだろうか。
それだったら最初に読むファイルは1個でいいように思う。
0318nobodyさん2009/06/15(月) 18:48:13ID:???
>>263
Capistranoのwin32での円記号が置換される問題ですが
結局、以下のようにパッチあてました。(全角空白を半角空白に置換してください)

--- base.org.rb 2009-06-08 17:12:53.187500000 +0900
+++ base.rb 2009-06-08 17:13:44.515625000 +0900
@@ -50,7 +50,12 @@
           def system(*args)
             cmd = args.join(' ')
             if RUBY_PLATFORM =~ /win32/
-              cmd.gsub!('/','\\') # Replace / with \\
+              parts = cmd.split(' ')
+              parts.collect! do |part|
+                part.gsub!('/','\\') unless /\/\// =~ part # if the string has // is probably a url, don't change.
+                part
+              end
+              cmd = parts.join(' ')
               cmd.gsub!(/^cd /,'cd /D ') # Replace cd with cd /D
               cmd.gsub!(/&& cd /,'&& cd /D ') # Replace cd with cd /D
               logger.trace "executing locally: #{cmd}"



余裕があったら、githubでリクエストしとけばいいのかな…。
つかCapistranon メインの開発リポジトリってどこなんでしょ?たぶんgithubのどこかだとは思うのですが…
0319nobodyさん2009/06/15(月) 18:59:00ID:???
Capistranoで標準入力扱うにはどうしたらよいものでしょうか?
複数行のmysqlコマンドを実行したいものなのですが…

とりあえず、思いついたのは、ファイルにいったん出力する方法です。
 sql = <<-
  (sqlいろいろ)
 EOF
 put sql, "#{shared_path}/db/tmp.sql"
 run "mysql hage_db -u hoge -p unkopass << #{shared_path}/db/tmp.sql"

見たいにする方法です。
しかし、何かスマートじゃないような…。
もっとスマートな方法はないものでしょうか?
03203192009/06/16(火) 07:26:15ID:???
>>319
ごめんなさい。
x run "mysql hage_db -u hoge -p unkopass << #{shared_path}/db/tmp.sql"
o run "mysql hage_db -u hoge -p unkopass < #{shared_path}/db/tmp.sql"
でした。
よく考えたら、<<で後ろに文字列つければいけるのかな…
0321nobodyさん2009/06/16(火) 10:23:15ID:???
>>315
どうひどいのかその資料からじゃさっぱり分からんな
資料というかメモ書きみたいな感じだが
0322nobodyさん2009/06/16(火) 12:44:13ID:???
>>318
なんでわざわざくっつけてからまた分解してまたまたくっつけ直すんだよ。
0323nobodyさん2009/06/16(火) 15:34:20ID:???
今はじめてJSONを使った。

こんなに便利だとは・・・。
今までajaxやるときは鯖からxml返して、ブラウザ側でxmlをパースしてたよ・・・。
0324nobodyさん2009/06/16(火) 15:37:41ID:???
>>323
今はいろんな言語で JSON を扱えるから、
サーバサイドの言語が変わっても移行しやすいだろうね。
0325nobodyさん2009/06/16(火) 18:39:01ID:???
serializeなカラムの生なYAMLテキストを得るのに
*_before_type_castを使うとデシリアライズされているかどうかによって
動作が変わってしまうのが気持ち悪いです。

Loading development environment (Rails 2.3.2)
>> User.create(:data=>{:a=>1}); u=User.last; u.data_before_type_cast.class
=> String
>> User.create(:data=>{:a=>1}); u=User.last; u.data; u.data_before_type_cast.class
=> Hash

シリアライズ後のサイズを見たいのです。
0326nobodyさん2009/06/16(火) 19:21:35ID:???
> サーバサイドの言語が変わっても移行しやすいだろうね。

マイクロソフト涙目w
03273192009/06/16(火) 19:25:39ID:???
Capistranoでの標準入力の渡し方ですが、
runメソッドの2番目の引数のハッシュで :data で指定してやればいいみたいでした。
ソースのドキュメントに記述がありました。
( lib/capistrano/configuration/actions/invocation.rb の Capistrano::Configuration::Actions::Invocation.run)

task :hello do
 s = <<-EOF
show databases;
exit
 EOF

 run "mysql -u root -pfuckmyhead", :data => s do |ch, stream, out|
  STDOUT.print out
  STDOUT.flush
 end
end
0328nobodyさん2009/06/16(火) 20:30:24ID:???
すいません、Passengerってデプロイ時の再起動はいらないと聞いていたのですが、実際どうなのでしょうか?

↓こちらのサイトではtmp/restart.txtを生成して再起動しているのですが、必要ないものなのでしょうか?
PassengerとcapistranoでのデプロイTips - diaの備忘録
http://d.hatena.ne.jp/DianthuDia/20080829/1219969683
0329nobodyさん2009/06/16(火) 20:35:03ID:???
>>328
capistrano は使ったことがないので知らないが、
生(?)で Passenger を使っている。

ソースを更新したとき、Passenger は、Apache の再起動はいらないけど、
RAILS_ROOT/tmp/restart.txt を touch してタイムスタンプを変えておく。
すると、次回の http request 時に、ソースを再読み込みする。

>>328 のページを斜め読みしたけど、なかで touch tmp/restart.txt をやっているようだけど?
0330nobodyさん2009/06/16(火) 20:43:09ID:???
>>325
unserializeを通ると@attributesの中身自体が差し替えられてしまう。
で、読み取り系はことごとくunserialzieを通ってしまう。

そうなる前に
u.instance_variable_get(:@attributes)[:data]
でどうか。

行儀よくないけど。
0331nobodyさん2009/06/16(火) 21:58:34ID:???
capistranoとかでデプロイする時
バックアップとかも同時に出来るの?
0332nobodyさん2009/06/16(火) 22:20:53ID:???
デフォルトのdeployだと、リリースごとにrelease/タイムスタンプ
というディレクトリに配置され、currentという名前で最新バージョンに
シンボリックリンクが張られる。
で、rollbackというタスクで前のバージョンに戻せる。
まー、これで不足ならタスク書けばだいたいのことはできるよ。
0333nobodyさん2009/06/17(水) 10:23:35ID:???
>>329
「再起動はいらない」ってapacheの再起動のことなんですね。
Passengerは touch tmp/restart.txt で再起動させるようにしてみます。
0334nobodyさん2009/06/17(水) 16:39:38ID:???
a というテーブルに b.id 用の FK である a.b_id を追加しようと思っています。

ruby script/generate migration AddAsToBsId b_id:text

すると、rake db:migrate で bs_id というテーブルに追加しようとします。
どのように書けばいいでしょうか。
03353342009/06/17(水) 16:53:33ID:???
自己解決しました。

ruby script/generate migration AddBsIdToAs b_id:text

と書くべきでした。
0336nobodyさん2009/06/17(水) 18:16:17ID:???
下記エラーが出るのは scaffold でテーブル名を複数形にすると発生するのですよね?

You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]

テーブルを削除せず、うまくやる方法はないものでしょうか。
0337nobodyさん2009/06/18(木) 10:58:31ID:???
Railsというのはruby以外のほかの言語も同時に使えるのでしょうか?


WEBアプリケーションの開発を楽にしてくれるだけで
基本的にRubyなんですか?
rubyに出来ないことはRailsにも出来ないということでしょうか?

Railsはjavascriptとかajaxとか
ウェブアプリを開発する上で
rubyとほかの言語も一緒に書くように出来るプラットフォームみたいな物なのでしょうか?

rubyという言語がjavascriptとかの言語も一緒に使える物なのか?
それとも
railsがほかの言語も使えるようにプラットフォームが整備されている物なのか
どうなんでしょうか?
0338nobodyさん2009/06/18(木) 11:02:06ID:???
学校の宿題なら宿題スレにいけ
0339nobodyさん2009/06/18(木) 11:23:55ID:???
JavaScript を調べるとスッキリするだろうね
0340nobodyさん2009/06/18(木) 14:48:28ID:???
先輩方に質問です!
関連するモデルが存在する場合に、モデルの削除を禁止したのですが何か方法はありますか?
例えば、自分のモデルのデータを削除したい時、関連相手が自分に対してbelongs_toしている場合は
削除できないようにしたいのです。
0341nobodyさん2009/06/18(木) 14:53:02ID:???
アプリで制御したいのかDBの制約でいいのかわからんな
DBの制約でいいならDBMSを追記・・・というかDBスレへ
アプリの制御なら普通にIFじゃダメなのか?
0342nobodyさん2009/06/18(木) 17:02:39ID:ZZEBh1dd
作ったアプリを海外VPSで動かしはじめて2ヶ月くらい。
システムを更新するたびに、面倒くさい思いをするんだけど、みんなどう更新してるの?
俺は今FTPサーバを構築して、サーバのファイルをそのまま上書きuploadしてるw
そしてapache再起動(passengerです。)

tracとかsvn使ったことないんだけど、ブラウザ上でソース変更して、保存してapache再起動したら
OK!みたいなことできるんだろうか。
0343nobodyさん2009/06/18(木) 17:11:57ID:???
>>342
Railsデプロイよめば?
0344nobodyさん2009/06/18(木) 17:18:35ID:???
>> 341
ActiveRecordの機能としてあるかどうか知りたかったんです。
削除対象のオブジェクトに関連しているモデルの存在チェックを行ってから
何も無ければ削除するようにしたいんです。
0345nobodyさん2009/06/18(木) 17:27:31ID:???
サイトごとに異なる設定はどこに書けばよいのですか。
ffmpegを使いたいのですが、ffmpegのパスを定数として
MyFfmpeg::BIN = '/usr/local/bin/ffmpeg'
このように設定したいのです。
これをどのファイルに書けばいいのですか。
initializers の下に ffmpeg_helper.rb を作ってそこに書いてみたのですが
test のときはいいのですが development ではロードされませんでした。
0346nobodyさん2009/06/18(木) 17:32:31ID:???
>>343
ググってみた。

Railsアプリケーションをデプロイしようとするとさまざまな問題が生じるため、
Railsアプリケーションの開発は好きだけれどもデプロイは嫌いという技術者は少なくありません。
本書はアプリケーションのデプロイ時に技術者が直面するさまざまな問題の解決策を体系的にまとめた
Railsデプロイガイドです。
本書ではまずRailsアプリケーションのデプロイを家探しにたとえて解説します。
そして、一連のデプロイ処理の中で、Railsアプリケーションのホスティング方式の選択、デプロイの自動化、
サーバ管理、クラスタリング手法といった高度なトピックについて詳しく解説します。

3000円。

欲しいな〜これ。でもデプロイに1冊の本はやや大げさなきもするなぁ。
0347nobodyさん2009/06/18(木) 18:14:38ID:???
Table.create data みたいに一行 insert したら、
その行の id を取得するにはどうしたらいいでしょうか?
0348nobodyさん2009/06/18(木) 18:28:09ID:???
>>344
has_many と belongs_to が適切に設定されていれば、
categories(1) - items(N)だとすると
category.itemsでモデルの配列を取得できるはずだけど

itemsがあまりにも膨大なレコードの場合は気をつけてね
has_many の before_removeと組み合わせるといいのかも

と思ったら、has_many に :dependent => restrict っていつの間にか増えてるな
これでできるんじゃないだろうか
教えたのだからもし試すのなら報告を義務としたい
そうすることでスレが良くなるから


>>346
おれはそれ買ってデプロイしてるよ。
薄い本だけど3000円は安いと思う。
Subversionなんて古いというやつは少し価値が落ちるかもしれんが。
あとMongrelが中心な感じかな。
0349nobodyさん2009/06/18(木) 19:24:01ID:???
>>346
この本は Passenger が載ってないのが惜しい
(タイミング的にちょっと前だったので)
0350nobodyさん2009/06/18(木) 19:31:33ID:???
メモリが少ないVPSはMongrelの方がいい場合も多いんじゃないだろうか
0351nobodyさん2009/06/18(木) 22:26:17ID:???
>>346
デプロイ面倒なら
クラウドコンピューターでもつかえよ
googleとかaptenaとかamazonとか
アップロード先の設定をしなくてもいいクラウド技術があるだろ
0352nobodyさん2009/06/18(木) 22:44:49ID:???
>>351
言ってる意味がわからん。
クラウドって、WebAPIでシステム間を繋ぐような、そんなイメージなんだが・・・。
0353nobodyさん2009/06/18(木) 23:21:25ID:???
>>352
ちょっと違う。
Web API でシステムをまたいで、ひとつの大きなシステムをかんがえたときに、

たとえば、システムA とシステムB とシステムC を、SOAP なりの web API で連携するが、
すべて社内の自鯖の場合(社内じゃなくてもいいけど):
→これは、web API でつないでいるけど、クラウドとは言わないよね。

クラウドとは、

・自分で作ったプログラムを、自鯖じゃないところで運用できる
 →駅前探検倶楽部の API とか楽天の API を呼び出すのは、クラウドとは言えないの?
   →この場合、自分で作ってリリースしたプログラムを呼び出しているのではなく、
   他の人が作ったサービスを呼び出しているだけなので、
   Web 2.0 的とは言ってよいが、クラウドとは言えない

・運用をホストしているところが、特にこちらがなにもしてくれなくてもスケールしてくれる。
 →レン鯖を借りて、そこでプログラムを動かすのとは違うの?
   →レン鯖を借りて、自分が作ったプログラムをリリースして動かせるが、
   そのプログラムの負荷が大きくなっても、基本的にレン鯖業者は台数を増やしてくれないし、
   お金を払って増やしてくれたとしても、それを活かすにはこちらがプログラム改修が必要。
   →クラウドコンピューティングの場合、データストアが Bigtable など、もともとサーバが増えたら
     自動的にスケールしてくれるような仕組みがある。
  
0354nobodyさん2009/06/18(木) 23:41:49ID:???
>>342
Subversionはあると便利だよ。
1. 開発環境でテストを十分にやってからコミット。
2. 本番環境でsvn up→touch tmp/restart.txt
個人でやる分にはこれで十分な気がする。
サーバの台数も少ないだろうし。
0355nobodyさん2009/06/19(金) 01:37:02ID:???
restfulなrouteを使う際に:idの部分を:nameにしてもらうような
オプションはないんだろうか。
数字のIDは味気ないからユーザアカウント名にしたいんです。

パスは/users/:nameで、
link_to(h(@user.name), @user)
としたときに
link_to(h(@user.name), :name=>@user.name)
と同じ結果になるイメージです。

/users/newはどうするんだって問題があるのか・・・
0356nobodyさん2009/06/19(金) 02:06:18ID:???
試してないけど
class User < AR::Base
alias to_param name
end
でどうだろう。
0357nobodyさん2009/06/19(金) 06:54:41ID:???
Subversionこれから覚えるんだったら
GitかMeなんとかを覚えた方がいい
0358nobodyさん2009/06/19(金) 09:45:43ID:???
同感。今なら git
0359nobodyさん2009/06/19(金) 09:49:12ID:???
使ったことないのだがGITの利点って具体的にわからん。
実用的な理由でsubversionではとても不便な何かが改善されてるのか?
流行始めてるのはわかるが、流行で飛びつくのってもううんざりだし。
0360nobodyさん2009/06/19(金) 10:07:37ID:???
DVCSだと、ローカルでブランチを切ってアレな実験を好き勝手にやっても、
取得元に反映せずに済む。
# svk終了しちゃったしな。

0361nobodyさん2009/06/19(金) 10:07:57ID:???
>>353
くわしい説明ありがとう。
勉強になるわ。

0362nobodyさん2009/06/19(金) 10:14:00ID:???
>>360
う〜ん、おれとしては特に魅力を感じないなあ
結局なんだかんだCSVがSubversionに置き換えられたように、
gitだのマーシャル?だのになるんだろうが今はいいや
0363nobodyさん2009/06/19(金) 10:18:15ID:???
>>362
Mercurialのことなら、「マーキュリアル」(mercuryの形容詞形の名詞的用法)
でも普通は hg って表記する。
0364nobodyさん2009/06/19(金) 10:50:03ID:???
insert into t(c1, c2, c3) values('b', 'a', 'r');

は

T.create data

と書けますが、PostgreSQL 8 からの

insert into t(c1, c2, c3) values('b', 'a', 'r') RETURNING id;

はどう書けばいいでしょうか。
( RETURNING id は、insert した id を返してくれます )

execute で SQL を書けば可能ですが、
Rails 風に短縮して書けると嬉しいです。
0365nobodyさん2009/06/19(金) 10:59:36ID:???
>>363
うお!イメージにあったスペルと違ってたw
これは恥ずかしい
0366nobodyさん2009/06/19(金) 12:31:56ID:???
>356

ttp://blog.tkmr.org/tatsuya/show/247-rails-37signals-url
これで妥協かも。
/users/123-tomo
って感じで「数字-名前」になる。
数字だけよりだいぶましです。
0367nobodyさん2009/06/19(金) 12:36:44ID:???
すません。
ttp://d.hatena.ne.jp/chyk/20090211/1234362408
これでビンゴっぽい。
to_paramでnameを返すようにしておいて、
コントローラでは
User.find(params[:id])
のところを
User.find_by_name(params[:id])
で良さそう。
試してないけど。

>356 ありがとう。
0368nobodyさん2009/06/19(金) 13:26:06ID:???
>>364
ようわからんが、

model = TModel.new
model.c1 = 'b'
model.c2 = 'a'
model.c3 = 'r'
foo = model.create!

で、foo に insert した時のオブジェクトが入るから、
foo.id で取り出せばいいんじゃないの?
0369nobodyさん2009/06/19(金) 13:31:36ID:???
>>362
Subversion と Gitなどの分散バージョン管理システムの話が出ているが、
くわしくはム板の該当スレのほうが詳しいが、
別に Git/Mercurial は、Subversion の置き換えではない。

中央集中型のほうが便利なときもあれば、分散型のほうが便利なときもある。

個人で使うのだったら、Git の方が速いなどのという理由や、web 上でも取り上げられることが多くなってきたので
移行している人も多いけど、
大規模プロジェクトで、スキルレベルの低い人もいるような場合は、Subversion のほうがいい。
そんなひとが hg push とか hg pull とか絶対覚えてくれない。

だから要所要所で使っていけばよい。
03703642009/06/19(金) 13:37:15ID:???
>>368
返り値があったのですね。
うまくいきました。ありがとうございますっ。
0371nobodyさん2009/06/19(金) 13:46:42ID:???
CVSの時もみんなのスキルレベルが高くないと酷い目に遭ってたしなあ。
結局、専任で必死にマージしてバージョン管理する人間が居たほうがうまく逝く罠。
二人以上がお互いに自分のソースの記述をマージし合って停滞したりもするし。
0372nobodyさん2009/06/19(金) 14:08:46ID:???
どんなにいい道具だっておかしな使い方すればダメだよ

バージョン管理の場合はスキルレベルじゃなくて物事を整理する能力だと思う
それをスキルと言ってしまえばスキルなんだが
おれはPCのデスクトップがごちゃごちゃのやつに
バージョン管理システムはいじらせたくない
0373nobodyさん2009/06/19(金) 14:20:03ID:???
デスクトップぐちゃぐちゃの奴にこそ
VCS を使わせて整理の大切さを教える派
0374nobodyさん2009/06/19(金) 15:25:38ID:???
読書記録を作ろうと思っています。

■ books テーブル
id|title
--+-----
10|foo
11|bar

■ records テーブル
id|books_id|comment
--+--------+-------
20|   10|good!!
21|   11|bad...

model/record.rb に「belongs_to :book」を追加しました。

view/records/show.html.erb に
<%=h @memo[:title] %> とした場合は空欄だし、
<%=h book[:titl] %> やm
<%=h record[:title] %>
としてもタイトルが取得できず、

You have a nil object when you didn't expect it!
The error occurred while evaluating nil.title

と出ます。DB を見てもデータは入っています。
どうすれば title が引けるでしょうか。
0375nobodyさん2009/06/19(金) 16:07:00ID:???
Subversionが足し算ならGit/Mercurialはかけ算
3*3は何ですかと質問して
Subversionは3が3つだから3+3+3=9と答えて
Git/Mercurialは3*3=9と九九を暗記している

0376nobodyさん2009/06/19(金) 16:24:48ID:???
その例え、全然わかんないよ
分かってるやつは理解できるのかもしれないけど
03773742009/06/19(金) 16:31:43ID:???
自己解決しました。
@record.book.title でいけました。
0378nobodyさん2009/06/19(金) 18:30:49ID:???
未だにマニュアルを見ないと svnのリポジトリをマージできません。
それなのに git だの hgだのを学ばねばならぬとは楽しみなことだ。

CVSでも、考えてみれば、マージはワーキングコピーのdiff & patchで済ましていた気がする。
0379nobodyさん2009/06/19(金) 18:45:42ID:???
ツールを追っかけて、フレームワークを追っかけて
0380nobodyさん2009/06/19(金) 19:23:06ID:???
>>378
今では面倒なことすべてやってくれるでしょ。
GUI利用して視覚的に見やすくなってるし。
0381nobodyさん2009/06/20(土) 01:21:31ID:???
>>372
>>373
俺はデスクトップぐちゃぐちゃだがsvnリポジトリのコミット担当してるし
ソースは無茶苦茶きれいに整理するし、gitだって使えるぞ
ひどい偏見だw
0382nobodyさん2009/06/20(土) 07:33:20ID:???
>>337
そもそも、JavaScriptはRails関係なく使えます。他のフレームワークでも使えるでしょう。
AJAXサポートなど、楽に使える機能も提供されてますよ。

>>342
そういう作業を「デプロイ」といいます。
退屈な作業なので、機械任せにするために、定番どころではcapistranoを使います。
cap deployで一発デプロイできるようになると快感です。

あと、Passengerならapache再起動要らないですよ。
リモートに、touch tmp/restart.txt するだけでPassengerだけ再起動してくれます。
このためのcapistranoの設定(capistrano文脈ではレシピといいます)も、
ネットで検索すればでてきます。

注意したい点は、capistranoは公式ページのドキュメントがなかなかに不親切なため、
ネットのブログに散見される設定(レシピ)を読んだり、ソースを読むかしないと挙動がイマイチわからない点があります。
ただ、Railsをやっている人にはできない作業ではないでしょう。

ぜひ、調べてみてください。
0383nobodyさん2009/06/20(土) 07:46:09ID:???
>>342
tracですが、元々はバグトラッキングシステムというくらいですので、バグ管理のものでありましたが、
今ではプロジェクト管理ツールというように広い意味で使われています。

チケット(プロジェクト管理ツールでの問題やタスクの登録単位)を登録することで、
問題やタスクを管理することができます。
複数人でのプロジェクトや他の人に問題などを公開する必要のある場合に効果を発揮するでしょう。
(私は一人プロジェクトでも使ってますが)

また、Subversion、git、Mercurialなどのバージョン管理ツールと連携して、
webでソースを閲覧したり、チケットと
バージョン管理のコミット(切りのよいソースの変更単位)を関連付けて、
お互いをリンクしたり、コミット時に自動的にチケットを終了させる、なんてこともできます。

最近では、チケット駆動開発といって、タスクのようなものをツールに登録していって、
管理ツールでプロジェクトのタスクも管理していく方法も広まってきました。


私はRails製のRedmineというツールを使っています。
Redmineは予想時間や経過時間の記録や集計、
予定日付の指定によるガントチャートの自動作成などができるため、
仕事のプロジェクトや、さらには自分のローカルにインスコしてタスク管理にも使ってます。
0384nobodyさん2009/06/20(土) 07:50:25ID:???
>>342
さて、svnとデプロイですが、(これは、gitやmercurialでも状況は同じ)
svnなどで管理しておくと、capistranoからもデプロイしやすいです。

svnの特定リビジョン(バージョン)を常に本番鯖に一発でデプロイする、とかの指定も思うがままです。

そうなると、svnを外部から参照できるように公開しておかなくてはいけないのか?という疑問がわいてきますが、
そうでなくてもcapistranoではデプロイできます。

 set :deploy_via, :copy

という設定で検索してみてください。ローカル(やローカルからアクセスできる)svnリポジトリから、
単純なコピーのような感じで、リモートにデプロイできます。
0385nobodyさん2009/06/20(土) 07:51:24ID:???
> svnの特定リビジョン(バージョン)を常に本番鯖に一発でデプロイする、とかの指定も思うがままです。
特定ブランチ、最新バージョン

といったほうがいいですね。訂正
0386nobodyさん2009/06/20(土) 11:10:15ID:???
>>384
くわしくありがとうございます。
デプロイじゃなくてソース管理の話になってしまうけど、今サーバー専用マシン(に見立てたVM)に
svnサーバーいれて、apache連携させて、windowsからTortoiseSVNで操作してみました。
これは便利ですね〜。
capistranoとの連携も試してみようと思います。

ここにいる人たちにとってはスライムレベルの話しかもしれませんが…。
0387nobodyさん2009/06/20(土) 11:13:16ID:???
客先の社内システムにrailsで提案してみる。
0388nobodyさん2009/06/20(土) 11:35:02ID:???
おれに作らせてくれ。Railsの仕事ないよ。PHPばっか
0389nobodyさん2009/06/20(土) 14:08:03ID:???
自分のところは、何で作るかは自分で決められるから今はRailsだけでやってる。
客は何で作るかには興味なくて、欲しいシステムと性能が得られれば文句はないわけなんだよね。
PHPで作れっていうお客さんってどういう感じなのかな?
0390nobodyさん2009/06/20(土) 14:36:33ID:???
純粋なユーザーならそうかもしれんが、
受注したやつを回すところもあるから。
自分とこのエンジニアが対応できる言語となると、
数としてはPHPの方がずっと優勢じゃないだろうか。
0391nobodyさん2009/06/20(土) 14:37:40ID:???
>>390
あと追加で、お客さんとこでもシステム要員を抱えてるとことか
そういう人たちは基本的には運用だけなんだけど
0392nobodyさん2009/06/20(土) 15:03:40ID:???
>>390
なるほど。そういう事情ならPHPで作って欲しいと言われるのは分かる。
0393nobodyさん2009/06/20(土) 16:37:53ID:???
ここの連中は元請という言葉を知らんのかw
0394nobodyさん2009/06/20(土) 17:43:57ID:???
JRuby on Railsって
使う言語を
RubyからJRubyに変えてあるだけで
何か特別な事って必要ないの?
0395nobodyさん2009/06/20(土) 21:07:01ID:???
>>383
redmine、インストールしてみますた。
これはわかりやすくいいですね。
svnと連携できて、感動しました(ただ、必要かはわかりませんが(笑)

うちの会社、進捗管理はエクセル、ソース管理はvssなんですよねぇ。
会社の改善会議で提案してみようかしら(=ω=)

チケットの最低単位が「日」なのがちょっと痛い。
0396nobodyさん2009/06/22(月) 21:42:29ID:ashzWp6s
質問させてください。
script/console のログをdevelopment.logに出力したいんですが、どうすればよいでしょうか??
教えていただきたく><
0397nobodyさん2009/06/22(月) 21:53:23ID:???
お断りします
■ このスレッドは過去ログ倉庫に格納されています