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

【Ruby】Ruby on Rails Part6

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/10/24(金) 17:46:53ID:???
■前 Ruby on Rails のスレ が
http://pc11.2ch.net/test/read.cgi/php/1207425569/

■参考サイト
<英語>
本家: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 33
http://pc11.2ch.net/test/read.cgi/tech/1223709050/
Ruby 初心者スレッド Part 22
http://pc11.2ch.net/test/read.cgi/tech/1221467121/
0002nobodyさん2008/10/24(金) 17:48:05ID:7gSUOf45
■変遷
【Agile】Ruby on rails相談所【DRY】
http://pc8.2ch.net/test/read.cgi/php/1118663500/
【Agile】Ruby on rails相談所 part2【DRY】
http://pc10.2ch.net/test/read.cgi/php/1151254378/
【Ruby】Ruby on Rails Part3
http://pc11.2ch.net/test/read.cgi/php/1170760209/

↓ム板に

Ruby on Rails
http://pc11.2ch.net/test/read.cgi/tech/1191381506/



Ruby on Rails のスレ が
http://pc11.2ch.net/test/read.cgi/php/1207425569/

イマココ
0003nobodyさん2008/10/24(金) 23:27:04ID:???
何でRoRって単価激安なの?
月単価7万が平均らしいけどさ
0004nobodyさん2008/10/24(金) 23:33:55ID:???
単価商売してないから知らんな。

0005nobodyさん2008/10/25(土) 02:39:11ID:9ih01Xfa
RubyもRailsも仕事として一回やってみたいのだが単価安いよな。
どうにかならんの?
0006nobodyさん2008/10/25(土) 07:52:53ID:Z4jD/NUt
単価とか変わらないでしょ。
工数で請求するんだから。
0007nobodyさん2008/10/25(土) 10:18:03ID:???
質問です
calendar_helperプラグインで作ったカレンダーにドラッグ&ドロップでタスクを入れたりしたいんですが、可能ですか?
Ajax効果をカレンダーに組み込むことが出来るのか、いまいちわからないんですが…
0008nobodyさん2008/10/25(土) 10:40:38ID:???
それぞれの日付にID振ったらあとはやりたい放題ではないか?
0009nobodyさん2008/10/25(土) 10:50:40ID:???
>>8
回答ありがとうございます
IDを振るというのは、現在表示されている月のカレンダーだけでないところ(翌月、前月など)でも出来るでしょうか?
そもそも振り方も良くわかってないのですが…
0010nobodyさん2008/10/25(土) 11:31:10ID:???
たぶん現状のcalendar_pluginの出力のDOMをJavaScriptでどうこうするよりは
HTMLを出力コードを書き換える方が楽だと思う。
0011nobodyさん2008/10/26(日) 01:11:05ID:???
大手ECサイトのヨドバシドットコムが、サイトリニューアルから大規模な障害を3日間...
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1220150877

506 :目のつけ所が名無しさん:2008/10/26(日) 00:47:20
大手ECサイトで、ここまで派手なリリース失敗は初めて見た。
エンジニア向けIT情報誌や関連サイトは、ぜひ取材して原因を明かして欲し
いは。
0012nobodyさん2008/10/26(日) 01:51:30ID:???
Java製っぽいけど。つうかマルチするな。
0013nobodyさん2008/10/29(水) 13:57:48ID:???
gem install mysqlで使えるようになるC版mysqlアダプターが高速だと聞いたのですがどんな感じなのでしょうか?
検索してもあまり評判で出てこないのですが
0014nobodyさん2008/10/30(木) 00:39:29ID:???
自分で入れて、ベンチマーク取れば良いだけの話
0015nobodyさん2008/11/01(土) 02:20:02ID:???
>>13

俺が試したところは、あんな感じでしたね。

普段何つかってんの?
0016nobodyさん2008/11/01(土) 02:53:43ID:???
質問お願いします
cronでRailsを叩きたいのですがcrontabの設定で足止めくらっています

RailsRootは /home/username/railsapp
Userモデルのcleanメソッドを叩きたいのです

↓のように色々試してみたのですがうまくいきません
1 * * * * root /usr/bin/ruby /home/username/railsapp/script/runner 'User.clean'
1 * * * * /usr/bin/ruby /home/username/railsapp/script/runner 'User.clean'

cron自体は問題なく動いており、Rails向けの書き方がおかしいのだと思います
よろしくお願いします
0017nobodyさん2008/11/01(土) 07:13:41ID:???
cronからメールが着てないかチェック
0018nobodyさん2008/11/01(土) 09:15:57ID:???
普段使ってるのが/usr/local/bin/rubyで、
railsも/usr/localに入ってるとかな。

0019nobodyさん2008/11/01(土) 12:33:11ID:???
すいません問題の切り分けが出来ていませんでした
cron云々ではなくscript/runnerで'User.clean'が叩けていないようで
cleanメソッドは存在するのにundefined methodエラーが返ってきます
script/runnerムズカシイ・・・
0020nobodyさん2008/11/01(土) 13:35:02ID:???
script/consoleからなら叩けるの?
0021nobodyさん2008/11/01(土) 13:41:28ID:???
インスタンスメソッドとして定義してるんじゃね?
0022192008/11/02(日) 03:33:36ID:???
このようにメソッドにselfを付けるとうまくいきました

class User < ActiveRecord::Base
 def self.clean
  
 end
end

これがインスタントメソッドなのでしょうか
script/runnerやscript/consoleから呼び出す場合はselfを付けるとうまくいっています
ただ、一部self無しでも動く場合もあるんですよね
勉強して出直してきます!ありがとうございました
0023nobodyさん2008/11/02(日) 13:04:46ID:???
>>22で定義したのはクラスメソッド。
>>21は、インスタンスメソッドとして定義してる*から動かない*んじゃね?と言っている。で、それが当たったわけだな。
0024nobodyさん2008/11/02(日) 14:14:30ID:???
>>23
そうですね、21さんの言葉をきっかけになんとなくselfを付けてみました
Railsはクラスやメソッドを意識しなくてもそれなりに動くものが作れる反面、
自分はRubyについて何もわかってないんだなーと再認識させられました
0025nobodyさん2008/11/02(日) 21:25:49ID:???
ほんとにレベル低い質問で申し訳ないんですが、
=> Booting WEBrick...
=> Rails 2.1.2 application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-11-02 20:35:38] INFO WEBrick 1.3.1
[2008-11-02 20:35:38] INFO ruby 1.8.5 (2006-08-25) [i486-linux]
[2008-11-02 20:35:38] INFO WEBrick::HTTPServer#start: pid=17580 port=3000
となってるのにローカルマシンのhttp://localhost:3000で見れないのって何ででしょうか?

一応動いていたapache2はとめました。

OSはdebian4.0です。
# gem list
/usr/bin/gem:14:Warning: Gem::manage_gems is deprecated and will be removed on or after March 2009.
*** LOCAL GEMS ***
actionmailer (2.1.2)
actionpack (2.1.2)
activerecord (2.1.2)
activeresource (2.1.2)
activesupport (2.1.2)
rails (2.1.2)
rake (0.8.3)
#
一行目の警告がでたので
gem install -v=2.1.2 rails
しました。

どなたかご教示いただければ助かります。
よろしくお願いいたします。
0026252008/11/02(日) 22:30:43ID:???
>>25
rebootで解決しました。
ブラウザがクラッシュしてたようです。
お騒がせいたしました。
0027nobodyさん2008/11/06(木) 02:38:58ID:uZzb8Dww
さーせん。1つ質問です。

ActiveRecordのhas_many使って
1対多のテーブル関係を持つ(親-子)
form_forを使用してデータをhtml表示させたいんですが

<%= f.text_field :name %>
みたいな感じで、親は表示できるのですが
子を表示させる方法で躓いています。

<%= f.text_field :子のカラム名 %>
のような方法で出力できるかと思ったのですが
うまくいきません。

どなたか、お願いします。
0028nobodyさん2008/11/06(木) 22:03:36ID:???
>>27
つ fields_for
0029272008/11/07(金) 00:12:42ID:F8NNnS0m
>>28
おおおお!ありがとう!!

you will go to heaven!!
0030nobodyさん2008/11/09(日) 10:33:14ID:???
postgreでやってるのだが、db:migrateすると
idカラム生成の時にシーケンステーブルも自動生成しましたといった
NOTICEメッセージがダラダラ出てうざいです。
NOTICE消す方法ってありますか?
0031nobodyさん2008/11/10(月) 05:39:35ID:???
Djangoやzopeと比べたRoRのメリットは何があるのでしょうか
0032nobodyさん2008/11/10(月) 07:09:29ID:???
>>31
pythonを学習する必要が無い
0033nobodyさん2008/11/10(月) 19:32:15ID:???
>>31
求人が多いこと。
すでにDjangoやZopeをマスターしているなら、乗り換える必要性はないと思うけど。
0034nobodyさん2008/11/12(水) 19:14:27ID:???
viでRails開発している人っている?
つか、みんなどんなエディタ使ってる?
#定期的に出る話題だとおもうけど、すまんのう。
0035nobodyさん2008/11/12(水) 20:21:19ID:???
Emacsだよ
vi使ってる人もたくさんいると思うけどvi使うのが不便なのかい?
0036nobodyさん2008/11/12(水) 21:41:34ID:???
netbeansはどうだろう
0037nobodyさん2008/11/12(水) 21:42:52ID:???
vim/emacs/TextMate/EmEditorを状況によって使い分けてる。
マカーなので一番多いのはTextMateだがな。

最近NetBeansもお試し中。
0038nobodyさん2008/11/13(木) 00:23:40ID:???
vim + ruby-modeで開発してるよ。rails.vimすら使ってない。
色づけとソース整形ができれば十分。
0039nobodyさん2008/11/13(木) 00:50:35ID:???
Aptana。1日1回は落ちるけど。
ttp://wota.jp/ac/?date=20060105
ttp://d.hatena.ne.jp/MillyC/20080924/1222255886
この辺にscoped_methodsの話があるけど、
ちょっとコードが複雑で追い切れてない。
with_scopeみたいにブロックの範囲内じゃなく、
任意のタイミングでscopeの開始、終了したいときは、
こんな感じでinstance_evalでscopet_methodsに
scopeをpush,popするだけでいいのかな。

def my_scope
{
:find => {:conditions => ["name <> ?", "name1"] }
}
end

Page.instance_eval do
 self.scoped_methods << my_scope
end

pages = Page.find(:all)

Page.instance_eval do
 self.scoped_methods.pop
end
0040nobodyさん2008/11/13(木) 01:38:23ID:vZzK0dow
Mac OS X 10.5でMacPortsで入れたapache2とrubyとgemで、
passengerを入れて、apache2を自動起動にして、
OSをリブートすると、apache2の自動起動に失敗するようです。

ログイン後、
$ sudo apachectrl start
だと、ちゃんと起動するのですが。

httpd.confから、passenger絡みの記述を削除すれば、正常に自動起動します。

何が悪いのでしょう。。。
0041nobodyさん2008/11/13(木) 10:22:29ID:???
>>40

Hope this helps.

code.google.com/p/phusion-passenger/issues/detail?id=131

>The following code change resolves the problem on my machine:

>1. Edit ext/apache2/Hooks.cpp
>2. Go to the function 'init_module'.
>3. Change 'delete hooks;' to '// delete hooks;'
>4. Reinstall Passenger.
0042nobodyさん2008/11/13(木) 11:53:31ID:???
vi使ってる人って、Terminal でvi使ってるの?
それとも、viアプリケーションみたいなのがあるの?
Emacsだと、Terminalでも使えるけど、最近はウィンドウアプリケーションとして使ってる人が多いよね。CarbonEmacsとか。
同じように、viでもウィンドウアプリケーションがあるのかな。
0043nobodyさん2008/11/13(木) 12:09:13ID:???
私はTeraTermから
0044nobodyさん2008/11/13(木) 13:18:40ID:???
ActiveRecordの話なんだけど、
たとえば「会社」に「倉庫」が必ず1つあって、
そこで「商品」を扱う場合、

class company < ActiveRecord::Base
has_one :storage
end

class storage < ActiveRecord::Base
belongs_to :company
has_many :goods
end

class goods < ActiveRecord::Base
belongs_to :storage
end

ってなると思うんだけど。
倉庫自体はとくに固有のデータは持たなくて、
ActiveRecordの操作系メソッドが欲しいだけなんけど、
storagesテーブルは作成しなくちゃならないのかな。

モデル上、会社が直接商品を操作するんじゃなくて
手続きの集合としての倉庫クラスを置きたいんだけどさ。
0045nobodyさん2008/11/13(木) 21:31:38ID:???
>>42
Gtk+を使ったものがあるね。gVim。
0046nobodyさん2008/11/13(木) 21:33:30ID:???
>>44
会社オブジェクトにその手続きを持たせても構わないんじゃないの?
「現実にあるモノとそれらの関係」をそのままモデル化する必要はない。

0047nobodyさん2008/11/13(木) 21:34:48ID:???
module StorageOperations
end

class Company < AR::Base
include StorageOperations
end
とか。
0048442008/11/13(木) 23:46:39ID:???
>>46,47
なるほどねー。
手続きはまとめたいので、Moduleでやってみることにします。
ありがとう!
0049nobodyさん2008/11/14(金) 03:14:57ID:???
>>34
vimとscreenとbashでやってる。
macだからTerminal.app上で。
rails.vimはいれてるけど、使かわなくなってる。てか使いこなせてない。

まわりに使ってる人もいないし、
emacsやほかのエディタと比較してどうかはわからない。

0050nobodyさん2008/11/14(金) 03:29:40ID:???
Merbどうすか?
思ったよりメモリ食うイメージがあって手を出してないんですが
0051nobodyさん2008/11/14(金) 10:27:06ID:???
まだ情報少ないし、これからって感じかな。
趣味で試すには面白そう。
でも仕事はRailsかな。
チームのみんながある程度習熟してないと困るし。
0052nobodyさん2008/11/14(金) 17:04:20ID:???
rubyフレームワークが増えるとRailsの開発にも刺激になってよさそうですね
0053nobodyさん2008/11/14(金) 20:01:15ID:???
簡単なアプリで比べたけどMerbもrailsも
メモリーの使用量は変らない。
1プロセス、35MB以上くう。
railsはメモリーくいすぎ。
0054nobodyさん2008/11/14(金) 22:57:38ID:???
>>42
Terminalだね。WindowsからPoderosaでLinuxにアクセスしてる。
0055nobodyさん2008/11/14(金) 23:44:05ID:???
何がメモリくってんのかな。
rubyが悪いのか、ActiveRecordがわるいのか、ActionPackか?
PHPでなんかしらのフレームワーク使った場合と比べてどうなんすかね
0056nobodyさん2008/11/16(日) 03:32:41ID:???
バイナリのカラムを検索するいい方法はないでしょうか。
  create_table :hosts do |t|
    t.binary :macaddr, :limit => 6
    t.string :hostname
  end
のようなテーブルを作って、MACアドレスをバイナリで保存する処理を考えているのですが、
  Host.find_by_macaddr(mac_bin)
のようにMACアドレスで検索しようとしたらログに
  ActiveRecord::StatementInvalid: SQLite3::SQLException: unrecognized token: "'": SELECT * FROM "hosts" WHERE ("hosts"."macaddr" = '')  LIMIT 1
と出力され、うまくいきません。
  Host.find_by_macaddr(ActiveRecord::ConnectionAdapters::SQLiteColumn.string_to_binary(mac_bin))
のようにすることで一応動くのですが。
0057nobodyさん2008/11/17(月) 00:52:51ID:???
質問スレが見当たらなかったのでこちらで失礼します。
RailsでURLをクリックした時に、そのURLをcontorollerに渡す方法はありますか?
URLは、link_to title,urlで生成されているものです。
0058nobodyさん2008/11/17(月) 03:21:33ID:???
>>57
コントローラではrequest.url、request.request_uriあたりじゃね?
何が返るのかは定義を見ること。

# 実は referr?er だったり……
0059nobodyさん2008/11/18(火) 01:48:36ID:???
routesの書き方、という意味なら
「URLをパラメータにする Rails」あたりでぐぐる
0060572008/11/21(金) 03:55:17ID:???
>>58,59
そんなやり方があったのですね、どうもありがとうございます。
重ねてまた聞きたいのですが、外部のサイトに飛びつつactionも呼ぶことって出来ますか?
具体的に言うと、yahooの検索apiから結果を取得してresultsに入れたものを
view上で
<% @results.each do |result| %>
<li><%= link_to result.Title, result.ClickUrl %></li>
<% end %>
のように書き、このリンクをクリックした時にactionを呼び出して、そこでrequest.urlを使って色々とやりたいのですが。。
0061nobodyさん2008/11/21(金) 11:39:00ID:???
>>60
redirectでいいんじゃね?
「HTTP redirect」でぐぐってみて。
0062nobodyさん2008/11/21(金) 21:49:12ID:???
>>60
コントローラの中で @results が得られて、それをビューで一覧。
ビューに示されたリンクを辿ると最終的に該当URLに飛ぶ、ということか。

コントローラに
def goto
redirect_to params[:url] # 値に対してなんらかの検証をしたほうがいいかも。
end
みたいなリダイレクト専用アクションを用意して
<%= link_to h(result.Title), :action => 'goto', :url => result.ClickUrl %>

JavaScriptが使えるならクライアントサイドのみで
<%= link_to_function h(result.Title), %Q|location.href="#{result.ClickUrl}"| %>
とかも可能かも。
0063nobodyさん2008/11/22(土) 04:30:32ID:???
クリックされたリンクをロギングしたいってことだよね。
なら >>61-62 みたいに、リダイレクトが一番素直でしょ。
でもこれだと訪問済リンク問題がでるから、これを避けたい場合 >>62 みたいにJavaScriptを使うことになる。
Googleの検索結果ページは後者だよね。
0064nobodyさん2008/11/22(土) 06:12:17ID:???
さすがに location.href の書き換え先が対象URLじゃぁアクションは起こらないな。
<%= link_to_remote h(result.Title), :url => { :action => 'goto', :url => result.ClickUrl } %>
か?
0065nobodyさん2008/11/22(土) 21:19:46ID:???
上手く説明できるかどうか分からんしRubyスレ行きかもしれんが、質問。

migrationしてデータベースと Hoge modelだけ作って、
./script/console からデータベースをいじってる。
hoge = Hoge.new() してhoge.name = hage などしてデータを入れて、
hoge.save をした。
その後 hoge2 = Hoge.find(:all, :conditions=>"name = hage") をして
データを呼び出したんだが、これが array クラスになってしまって、
hoge2.name で hage を呼び出せない。
要は Hoge.find で呼び出したデータを簡単に Hoge クラスとして扱いたい。

どうしたらいいのか教えてほしい。
0066nobodyさん2008/11/22(土) 21:48:48ID:???
find :all しているのでArrayになる。条件に該当するオブジェクトを全部取得するので。

name = "hage" がユニークなら、Hoge.find(:first, :conditions => ["name => ?", "hage"]) や
Hoge.find_by_name("hage") とすればいい。

あるいは、仕様上 name = "hage" のオブジェクトが複数存在するなら、
hoges = Hoge.find(:all, :conditions=>"name = hage")
hoges.each{|hoge| do_something} と複数のオブジェクトに対して順に処理すればいい。
■ このスレッドは過去ログ倉庫に格納されています