【Ruby】Ruby on Rails Part6
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/10/24(金) 17:46:53ID:???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:???月単価7万が平均らしいけどさ
0004nobodyさん
2008/10/24(金) 23:33:55ID:???0005nobodyさん
2008/10/25(土) 02:39:11ID:9ih01Xfaどうにかならんの?
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:???0009nobodyさん
2008/10/25(土) 10:50:40ID:???回答ありがとうございます
IDを振るというのは、現在表示されている月のカレンダーだけでないところ(翌月、前月など)でも出来るでしょうか?
そもそも振り方も良くわかってないのですが…
0010nobodyさん
2008/10/25(土) 11:31:10ID:???HTMLを出力コードを書き換える方が楽だと思う。
0011nobodyさん
2008/10/26(日) 01:11:05ID:???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:???0013nobodyさん
2008/10/29(水) 13:57:48ID:???検索してもあまり評判で出てこないのですが
0014nobodyさん
2008/10/30(木) 00:39:29ID:???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:???0018nobodyさん
2008/11/01(土) 09:15:57ID:???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:???0021nobodyさん
2008/11/01(土) 13:41:28ID:???002219
2008/11/02(日) 03:33:36ID:???class User < ActiveRecord::Base
def self.clean
end
end
これがインスタントメソッドなのでしょうか
script/runnerやscript/consoleから呼び出す場合はselfを付けるとうまくいっています
ただ、一部self無しでも動く場合もあるんですよね
勉強して出直してきます!ありがとうございました
0023nobodyさん
2008/11/02(日) 13:04:46ID:???>>21は、インスタンスメソッドとして定義してる*から動かない*んじゃね?と言っている。で、それが当たったわけだな。
0024nobodyさん
2008/11/02(日) 14:14:30ID:???そうですね、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
しました。
どなたかご教示いただければ助かります。
よろしくお願いいたします。
0027nobodyさん
2008/11/06(木) 02:38:58ID:uZzb8DwwActiveRecordのhas_many使って
1対多のテーブル関係を持つ(親-子)
form_forを使用してデータをhtml表示させたいんですが
<%= f.text_field :name %>
みたいな感じで、親は表示できるのですが
子を表示させる方法で躓いています。
<%= f.text_field :子のカラム名 %>
のような方法で出力できるかと思ったのですが
うまくいきません。
どなたか、お願いします。
002927
2008/11/07(金) 00:12:42ID:F8NNnS0mおおおお!ありがとう!!
you will go to heaven!!
0030nobodyさん
2008/11/09(日) 10:33:14ID:???idカラム生成の時にシーケンステーブルも自動生成しましたといった
NOTICEメッセージがダラダラ出てうざいです。
NOTICE消す方法ってありますか?
0031nobodyさん
2008/11/10(月) 05:39:35ID:???0034nobodyさん
2008/11/12(水) 19:14:27ID:???つか、みんなどんなエディタ使ってる?
#定期的に出る話題だとおもうけど、すまんのう。
0035nobodyさん
2008/11/12(水) 20:21:19ID:???vi使ってる人もたくさんいると思うけどvi使うのが不便なのかい?
0036nobodyさん
2008/11/12(水) 21:41:34ID:???0037nobodyさん
2008/11/12(水) 21:42:52ID:???マカーなので一番多いのはTextMateだがな。
最近NetBeansもお試し中。
0038nobodyさん
2008/11/13(木) 00:23:40ID:???色づけとソース整形ができれば十分。
0039nobodyさん
2008/11/13(木) 00:50:35ID:???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:vZzK0dowpassengerを入れて、apache2を自動起動にして、
OSをリブートすると、apache2の自動起動に失敗するようです。
ログイン後、
$ sudo apachectrl start
だと、ちゃんと起動するのですが。
httpd.confから、passenger絡みの記述を削除すれば、正常に自動起動します。
何が悪いのでしょう。。。
0041nobodyさん
2008/11/13(木) 10:22:29ID:???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アプリケーションみたいなのがあるの?
Emacsだと、Terminalでも使えるけど、最近はウィンドウアプリケーションとして使ってる人が多いよね。CarbonEmacsとか。
同じように、viでもウィンドウアプリケーションがあるのかな。
0043nobodyさん
2008/11/13(木) 12:09:13ID:???0044nobodyさん
2008/11/13(木) 13:18:40ID:???たとえば「会社」に「倉庫」が必ず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テーブルは作成しなくちゃならないのかな。
モデル上、会社が直接商品を操作するんじゃなくて
手続きの集合としての倉庫クラスを置きたいんだけどさ。
0046nobodyさん
2008/11/13(木) 21:33:30ID:???会社オブジェクトにその手続きを持たせても構わないんじゃないの?
「現実にあるモノとそれらの関係」をそのままモデル化する必要はない。
0047nobodyさん
2008/11/13(木) 21:34:48ID:???end
class Company < AR::Base
include StorageOperations
end
とか。
0049nobodyさん
2008/11/14(金) 03:14:57ID:???vimとscreenとbashでやってる。
macだからTerminal.app上で。
rails.vimはいれてるけど、使かわなくなってる。てか使いこなせてない。
まわりに使ってる人もいないし、
emacsやほかのエディタと比較してどうかはわからない。
0050nobodyさん
2008/11/14(金) 03:29:40ID:???思ったよりメモリ食うイメージがあって手を出してないんですが
0051nobodyさん
2008/11/14(金) 10:27:06ID:???趣味で試すには面白そう。
でも仕事はRailsかな。
チームのみんながある程度習熟してないと困るし。
0052nobodyさん
2008/11/14(金) 17:04:20ID:???0053nobodyさん
2008/11/14(金) 20:01:15ID:???メモリーの使用量は変らない。
1プロセス、35MB以上くう。
railsはメモリーくいすぎ。
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:???コントローラではrequest.url、request.request_uriあたりじゃね?
何が返るのかは定義を見ること。
# 実は referr?er だったり……
0059nobodyさん
2008/11/18(火) 01:48:36ID:???「URLをパラメータにする Rails」あたりでぐぐる
006057
2008/11/21(金) 03:55:17ID:???そんなやり方があったのですね、どうもありがとうございます。
重ねてまた聞きたいのですが、外部のサイトに飛びつつactionも呼ぶことって出来ますか?
具体的に言うと、yahooの検索apiから結果を取得してresultsに入れたものを
view上で
<% @results.each do |result| %>
<li><%= link_to result.Title, result.ClickUrl %></li>
<% end %>
のように書き、このリンクをクリックした時にactionを呼び出して、そこでrequest.urlを使って色々とやりたいのですが。。
0062nobodyさん
2008/11/21(金) 21:49:12ID:???コントローラの中で @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:???<%= link_to_remote h(result.Title), :url => { :action => 'goto', :url => result.ClickUrl } %>
か?
0065nobodyさん
2008/11/22(土) 21:19:46ID:???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:???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} と複数のオブジェクトに対して順に処理すればいい。
0067nobodyさん
2008/11/22(土) 22:02:19ID:???0068nobodyさん
2008/11/23(日) 01:08:31ID:???0069nobodyさん
2008/11/23(日) 04:16:51ID:???http://www.tutorialspoint.com/ruby-on-rails-2.1/index.htm
を参考に初めてrailsやってるんですが、
http://www.tutorialspoint.com/ruby-on-rails-2.1/rails-views.htm
まできて、 /book/list にアクセスした際に、「テンプレートが無い」ではなく、「uninitialized constant BookController::Book」となりました。
見た感じ、BookControllerというクラスにBookなんて変数無い、と見えたので、BookControllerのlistメソッドを下記のように変更したら、次に勧めました
def list
+ @books = Books.find(:all)
- @books = Book.find(:all)
end
これはチュートリアルの間違いですか?それとも2.1と2.2.2の違いですか?
0070nobodyさん
2008/11/23(日) 06:20:47ID:???0071nobodyさん
2008/11/23(日) 06:22:06ID:???ruby script/generate Book とすべきところを
ruby script/generate Books としてしまったのではないかと思うのだが。
0072nobodyさん
2008/11/23(日) 06:23:02ID:???0073nobodyさん
2008/11/23(日) 13:43:37ID:???app/modelsにbooks.rbがあるのと、コマンド履歴に>71がありました。
どう見てもtypoです。本当にありがとうございました。
0074nobodyさん
2008/11/24(月) 02:00:37ID:???0075nobodyさん
2008/11/24(月) 03:10:41ID:???0076nobodyさん
2008/11/24(月) 13:43:36ID:???入門向けコーナーができたらしい
0078nobodyさん
2008/11/25(火) 17:37:28ID:???model? controller? それともどっか別の場所?
0079nobodyさん
2008/11/25(火) 18:49:48ID:???ActiveRecord::Errorsオブジェクト。
validate対象オブジェクトのerrorsメソッドで取り出せる。
validateを自分で定義したりvalidates_eachの場合は
errors.addで自分でエラーを突っ込む必要がある。
http://api.rubyonrails.org/classes/ActiveRecord/Validations.html
http://api.rubyonrails.org/classes/ActiveRecord/Errors.html
■ このスレッドは過去ログ倉庫に格納されています