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

【Ruby】Ruby on Rails Part10

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2010/08/28(土) 19:27:42ID:Er5MNJZv
■前
【Ruby】Ruby on Rails Part9
http://hibari.2ch.net/test/read.cgi/php/1266563593/

■参考サイト
<英語>
本家: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/

http://twitter.com/dhh
http://www.loudthinking.com/

0870nobodyさん2010/11/28(日) 08:59:16ID:???
>> User.count
=> 302
>> User.limit(1).all.count
=> 1
なときに
>> User.limit(1).count
=> 302
って返ってくるのはバグなのかなぁ...
count でなくても will_pagenate の pagenate でも同様だし...
0871nobodyさん2010/11/28(日) 09:17:46ID:???
バグではないですね。
allの時点で結果を取ってきているのと、そうでないのとの違いですね。
User.limit(1).all.count # => SELECT "users".* FROM "users" LIMIT 1
User.limit(1).count # => SELECT COUNT(*) FROM "users" LIMIT 1
0872nobodyさん2010/11/28(日) 10:38:49ID:???
むー、言われてみればそんな気もするけど、User.limit(1).count は
SELECT COUNT(scoped.*) FROM (SELECT users.* FROM "users" LIMIT 1) AS scoped;
になってほしいような気もする。
んで、今気がついたんだけど、rails-3.0.1 + arel-1.0.1 ではそうなってた。
0873nobodyさん2010/11/28(日) 11:05:08ID:???
ARelはたこやき仮面が保守してるから、気になるところは日本語で質問できそうな気がする。
0874nobodyさん2010/11/28(日) 13:17:37ID:???
Arel爆速になったらしいけどどうですか
0875nobodyさん2010/11/28(日) 13:30:39ID:???
0.01が0.005になったかな。
0876nobodyさん2010/11/28(日) 14:59:54ID:???
arel便利すぎるわ。こういうのをセンスって言うんだろうな
0877nobodyさん2010/11/28(日) 17:47:11ID:???
ずいぶん前にrails3でgettextみたいな話が出てたけど、gettext_i18n_railsなんてのがあるのね。
ちょっと使った感じでは、poを直接使えたり悪くなさそうなんだけど、使われてない?
ruby1.9の{a: 1}みたいなHashの書き方をhamlでやってたら、パースエラーになったけど。。。
0878nobodyさん2010/11/28(日) 18:47:20ID:???
もう標準のi18nしか使ってないわ
0879nobodyさん2010/11/28(日) 19:55:59ID:???
gettextは抽出対象の抽出(poファイルの生成)がシステム化されてるところが好きなんだけどねぇ。
0880nobodyさん2010/11/29(月) 18:39:00ID:???
railsのデータベースにcsvファイルから一括登録することって出来ます?
sqliteとか起動してやるんじゃなくてrailsの機能として
0881nobodyさん2010/11/29(月) 19:21:09ID:???
すぐコードを示すことは出来ないけど、FixturesをCSVから一括ロードする仕組みが
あるから、うまく騙せば可能かもしれん。
0882nobodyさん2010/11/29(月) 20:17:48ID:???
騙すというと?
普通はそういうことしないんですか?
0883nobodyさん2010/11/29(月) 20:18:41ID:IMeBJree

>>880
第12回 CSVのfixtureを取り込んで、都道府県を選択するセレクトボックスを作ってみる
http://www.google.com/search?rls=ja&q=ponk.jp/?p=2266&ie=utf-8&oe=utf-8


第17回 Rails 2.3.4にてdb/seeds.rbを編集しdb:seedタスクを使って都道府県データを投入する ? Rails格闘記 ? ポンクソフト
http://ponk.jp/?p=2367
0884nobodyさん2010/11/29(月) 20:35:12ID:???
いや、登録するのは別にsqliteの機能でもいいんですが、
データベース使うのに一括登録するような機能が何故railsに無いんでしょうか…?
0885nobodyさん2010/11/29(月) 20:53:56ID:???
>>882
本来はテストデータを流し込む目的のものだから、用途外の使用になるってこと。

一括登録したいだけならseeds.rb に書けばいいんだけど、これ Model.create(...) を書くんだよねー。
0886nobodyさん2010/11/29(月) 21:37:48ID:???
というかCSVは誰もが使うわけじゃないから、Railsにインポート機能はいらないだろ
0887nobodyさん2010/11/29(月) 21:42:53ID:???
正攻法としては seeds.rb に
require 'csv' # とか faster_csv とか

CSV.foreach(File.join(Rails.root, 'db/initial_users.csv')) do |row|
user = User.new(:name => row[1], :password => row[2].crypt)
user[:id] = row[0]
user.save!
end

みたいなの書くことになるのかね。
0888nobodyさん2010/11/29(月) 22:12:55ID:???
なんでsqliteの機能じゃダメなの?
0889nobodyさん2010/11/30(火) 00:19:29ID:???
>>887
それは遅すぎる
0890nobodyさん2010/11/30(火) 01:10:36ID:???
seed使うのも面倒なんで
fixture:load をいつも使ってたけど みんなはどうしてるのか興味がある
0891nobodyさん2010/11/30(火) 01:47:51ID:???
こいつ各所でスクレイピングこじきしてるやるだからー
0892nobodyさん2010/11/30(火) 01:54:24ID:???
railsをExcelと同じだと思ってる馬鹿
0893nobodyさん2010/11/30(火) 02:04:36ID:???
それを言うならAccessだろ
0894nobodyさん2010/11/30(火) 02:27:33ID:???
いやAccessすら知らないよこのクズは
こんなに人にクズっていったのひさしぶりだわ
0895nobodyさん2010/11/30(火) 02:34:51ID:l0QAGEWH

MYSQL CSVファイル入出力
http://sasuke.main.jp/sqlcsv.html


0896nobodyさん2010/11/30(火) 02:37:51ID:???
仕事でGB単位のCSVをrailsに取り込んだけど、それは seedの中でmysqlの機能使って読み込んだ。executeで。

0897nobodyさん2010/11/30(火) 03:45:11ID:VoV6WFzl

PHPの種 ブログ phpMyAdminでCSVファイルのインポート
http://www.php-seed.net/blog/archives/39
0898nobodyさん2010/11/30(火) 09:15:47ID:???
ARって大量データの挿入には向いてない?
0899nobodyさん2010/11/30(火) 09:22:12ID:???
DBに入れたらいらなくなるデータ構造をこしらえては端からGCの刑に処してるんだから
生のSQLや、直接ロード(MySQLのINFILEみたいな)より効率がいいわけがない。
バルクINSERTする拡張とかはあるけどな。
0900nobodyさん2010/11/30(火) 09:35:26ID:???
ARはデータ扱うの向いてない
0901nobodyさん2010/11/30(火) 13:43:26ID:???
おまいらただのORMに何を期待してるんだ?
0902nobodyさん2010/12/01(水) 01:26:50ID:???
(たぶん)最初のRails3本が一番期待できない工学社からとは。。
どの本もやっつけすぎて全く期待できん
0903nobodyさん2010/12/01(水) 03:39:34ID:7SFDU/VC

Rails 3 in Action
Yehuda Katz and Ryan A. Bigg
http://www.manning.com/katz/

0904nobodyさん2010/12/01(水) 06:00:30ID:3YNIkeRH
Install any HTML theme/template into your Rails app
http://drnicwilliams.com/2009/10/06/install-any-html-themetemplate-into-your-rails-app/
http://github.com/drnic/install_theme
http://drnicwilliams.com/


http://github.com/pilu/web-app-theme


http://themeforest.net/
0905nobodyさん2010/12/01(水) 07:14:19ID:???
webフレームワークの書籍に期待なんてするなよ
0906nobodyさん2010/12/01(水) 12:21:14ID:???
全然意味分からないw
0907nobodyさん2010/12/01(水) 14:08:00ID:ONKtIuWw

Rails 2.3のApplication Templateで煩わしい初期設定とはおさらばする! - func09
http://www.func09.com/wordpress/archives/426

http://m.onkey.org/rails-templates



0908nobodyさん2010/12/01(水) 21:24:07ID:???
>>905
x webフレームワークの書籍に期待なんてするなよ
o webフレームワークの(日本の)書籍に期待なんてするなよ
0909nobodyさん2010/12/01(水) 21:31:23ID:???
最新の情報はネットでとか言ってるくせに、
WindowsのRails環境ひとつまともに構築できないんだよな
矛盾だとは思わんのかね
0910nobodyさん2010/12/01(水) 22:19:30ID:???
どこが矛盾しているのだろうか。
0911nobodyさん2010/12/01(水) 22:24:53ID:???
最新の情報をネットで拾えば簡単に構築できるから


・・・バカ?
0912nobodyさん2010/12/01(水) 23:40:32ID:???
↓まあそう言うな、彼にも悪気はなかったのさ
0913nobodyさん2010/12/02(木) 01:14:42ID:???
でも本でまったりと基本を確認するのは嫌いじゃない
基本を蔑ろにした似非エンジニアほどネットで最先端の情報を得るなどと称しては常時酸欠状態に陥っている脳味噌から得体のしれないコードを産出するのである
0914nobodyさん2010/12/02(木) 04:59:02ID:???
>>908
海外も一緒。
0915nobodyさん2010/12/02(木) 12:09:57ID:???
バカは難しい本・分厚い本が読めない
0916nobodyさん2010/12/02(木) 13:08:29ID:???
content_forの意義がよくわからんのだが

<title><%= @title %></title>

def index
  @title = "post - HogeBlog"
  〜
end

と比べて何が便利?
0917nobodyさん2010/12/02(木) 13:43:47ID:???
馬鹿は簡単な本でも読まない読めない
0918nobodyさん2010/12/02(木) 16:49:33ID:???
>>916
helper使う時とかJSのコード書くときに便利だと思う
必要なければ無理に使わなくてもよか
0919nobodyさん2010/12/02(木) 16:53:21ID:uqqMYXpe
>> 916
コントローラがすっきりする。けどまあ好みの問題だと思う。
0920nobodyさん2010/12/02(木) 19:04:05ID:???
どこでcssを書いてもheadに入るようにしてたり。
横着者にはcontent_for必須
0921nobodyさん2010/12/02(木) 19:19:21ID:???
もう一度基本から勉強したい
知識が2.1で止まってるので新機能も勉強したい
rails3のアジャイル本早くでないかなあ
0922nobodyさん2010/12/02(木) 19:52:53ID:???
基本的なことは2と3はほぼ同じ。
0923nobodyさん2010/12/03(金) 00:02:19ID:???
http://railstutorial.org/ruby-on-rails-tutorial-book
html版超おすすめ。pdf版はちと高い。
0924nobodyさん2010/12/03(金) 02:09:41ID:QdlVQjpy
http://7.latest.itrain.appspot.com/


Ruby Freaks Lounge:第16回 Google App Engine上でRailsを動かす|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/ruby/0016
http://gihyo.jp/dev/serial/01/ruby/0016?page=2

0925nobodyさん2010/12/03(金) 04:28:09ID:???
>>923
英語〜
0926nobodyさん2010/12/03(金) 13:04:41ID:???
>>923
GJ!
thx!!!
0927nobodyさん2010/12/03(金) 15:09:05ID:???
それ参考にしてrvmもっかい使ってみようかな
0928nobodyさん2010/12/04(土) 20:54:49ID:???
railsのhtml.erbで作ったループ内部で
java script呼び出しって出来ます?
java scriptの関数呼び出しはイベントハンドラのやりかたしか
知らないんですが
0929nobodyさん2010/12/04(土) 22:03:53ID:???
Railsとは関係ないからJavascriptの本で勉強した方がいいと思う
0930nobodyさん2010/12/04(土) 22:21:17ID:???
<% @tables.each do |table| %>
<% end %>

@tablesのタプルそれぞれについて、
javascriptの処理をしたいだけなんですが。
0931nobodyさん2010/12/04(土) 22:26:15ID:???
うん だから Rails とは関係ないよ
0932nobodyさん2010/12/04(土) 22:36:41ID:???
javascriptはブラウザに返されるまではただのHTMLソース上の文字列だ。
0933nobodyさん2010/12/04(土) 23:44:32ID:???
最近切り分けできない人多いなぁ
0934nobodyさん2010/12/05(日) 04:58:25ID:???
ちょっと気になったんだがタプルって何だろう まさかtableを...いやなんでもない
0935nobodyさん2010/12/05(日) 15:03:47ID:???
>>934
まずググってみれば... いやなんでもない
0936nobodyさん2010/12/05(日) 15:14:44ID:???
rindaのあるrubyでタプルを知らない人がいるわけがない。
0937nobodyさん2010/12/05(日) 22:07:50ID:???
railsアプリケーションを初めて作って公開したのですが、
あっという間にログファイルのサイズが凄いことに…
vi production.log
とコマンドを打つとファイルが開けず固まってしまうのです。

Apacheのログファイルのようにローテーションさせることは可能でしょうか?
一般的にはどのようにログファイルを管理しているのかを知りたいです。
0938nobodyさん2010/12/05(日) 22:13:20ID:???
logrotate
0939nobodyさん2010/12/05(日) 23:01:22ID:???
ファイルが一定サイズに達したらローテーションさせたり、dailyやweeklyなど期間ごとも可能
rails log dailyとかで検索すれば実際の設定例でてきます
あとはログのレベルを下げるのも一つの手かと warnだけとかね
0940nobodyさん2010/12/06(月) 00:20:00ID:???
ログのローテーション設定を忘れるとか、慣れてないうちはよくあるよな。
0941nobodyさん2010/12/06(月) 00:24:21ID:???
logファイルが55MBぐらいになってrailsが動かなくなったことある
09429372010/12/06(月) 01:05:07ID:???
皆様ありがとうございます。
dailyでログローテートすることにしました。
environment.ebに1行加えるだけで設定出来るとは、さすがrailsですね。
ちなみにログファイルは800M程度になっていました…かなり危険な状態だったのかw
0943nobodyさん2010/12/06(月) 06:54:02ID:???
railsって日本語扱えないんですか?
0944nobodyさん2010/12/06(月) 08:54:57ID:???
ruby1.9.2だとマジックコメントを書かないと使えません
0945nobodyさん2010/12/06(月) 09:44:09ID:???
link_to 6000個で3300msも掛かるんだけどふざけてるの?
0946nobodyさん2010/12/06(月) 11:26:29ID:???
link_to 6000個も使ってふざけてるの?
0947nobodyさん2010/12/06(月) 11:28:21ID:9d8UpobB
InfoQ: ペアプログラミングの1ドルの価値
http://www.infoq.com/jp/news/2009/07/dollar-value-of-pair-programming
プログラミングはタイプすることだと誤って考えられるからだ。
現実に、もちろんプログラミングの大部分は、実際に考えることで、
その結果として間違った決定をしたり、エラーを作り出したりする機会を延々ともたらすことになる。

ペアプログラミングをする価値は、最初の場所でエラーが起きるのを防ぐとても小さな軌道修正という形でやってきます。
軌道修正は小さな範囲で行われ、ペアで行う作業の流れの中で境目なく起こるので、通常まったく気付かれません



プログラマーって本当に労働者なのか?
「コード1行につき10円」
1万10円、40円、10円
http://blog.livedoor.jp/dankogai/archives/50766218.html
0948nobodyさん2010/12/06(月) 13:40:12ID:???
>>946
1700個のデータに4つリンクだから6800個だったわ
タグ直書きに変えたら400msになったぞおい
0949nobodyさん2010/12/06(月) 14:20:56ID:???
それdevelopmentでないの?
productionモードなら ほんのちょっとのオーバーヘッドで済んだ記憶がある
09509452010/12/06(月) 15:09:36ID:???
詳しくは計ってないけど
rails3.0.3

<%= link_to site.title, site %>
production
Rendered sites/index.html.erb within layouts/application (3496.1ms)
Completed 200 OK in 4741ms (Views: 3530.2ms | ActiveRecord: 29.0ms)
development
Rendered sites/index.html.erb within layouts/application (3358.8ms)
Completed 200 OK in 4649ms (Views: 3362.0ms | ActiveRecord: 19.7ms)

<a href="/sites/<%= site.id %>"><%= site.title %></a>
Rendered sites/index.html.erb within layouts/application (449.8ms)
Completed 200 OK in 1464ms (Views: 453.9ms | ActiveRecord: 22.5ms)
0951nobodyさん2010/12/06(月) 16:25:59ID:???
link_toが遅いのはともかく、
6800個も1ページにリンクがある時点で間違ってる。
0952nobodyさん2010/12/06(月) 18:03:45ID:???
さすがにベンチマークだろ
0953nobodyさん2010/12/06(月) 18:25:52ID:???
ベンチマークって言うより、いじめだな
0954nobodyさん2010/12/06(月) 20:00:50ID:???
6800個がダメなら何個ならいいの
0955nobodyさん2010/12/06(月) 20:11:00ID:???
関連名でJOINさせた時のテーブル名(エイリアス名)は、関連名をtableizeしたものの方が嬉しい気がするのだけど、
どうなんでしょう?

時々同一テーブルを複数回joinさせたい事があって、例えば
class Task < ActiveRecord::Base
 belongs_to :create_user, class_name: 'User', foreign_key: :create_user_id
 belongs_to :update_user, class_name: 'User', foreign_key: :update_user_id
end
のようなモデルがあって、Task.joins(:create_user, :update_user)をすると、
 INNER JOIN "users" ON "users"."id" = "tasks"."create_user_id"
 INNER JOIN "users" "update_users_tasks" ON "update_users_tasks"."id" = "tasks"."update_user_id"
な感じのSQLが発行されます。それより、
 INNER JOIN "users" "create_users" ON "create_users"."id" = "tasks"."create_user_id"
 INNER JOIN "users" "update_users ON "update_users"."id" = "tasks"."update_user_id"
の方が自分は嬉しい。
0956nobodyさん2010/12/06(月) 23:48:40ID:???
joinsに文字列渡せば?
0957nobodyさん2010/12/07(火) 00:14:31ID:???
unionはつかえますか?
0958nobodyさん2010/12/07(火) 00:17:54ID:???
なんでも使えるよ
0959nobodyさん2010/12/07(火) 01:09:26ID:l8HqKN9H
Rails3をWindowsでproduction modeで動かすのって、
どうするのが、手軽でしょうか。
(個人のアプリなので、速度はほどほどで十分です。)

開発は、Netbeans使って問題なくできているけど、いざ動かそうとするとうまく動かない。

うまくWindowsサービスに登録できれば、一番手軽なんだけども。。
0960nobodyさん2010/12/07(火) 03:22:06ID:???
開発時的に一時的に動かすんじゃなくて常時動かしたいってこと?
0961nobodyさん2010/12/07(火) 10:38:25ID:scN2l8RE
質問させてください。
デバッグでpを使って出力されたものを見ることがあると思いますが、
printするものが大量だと サーバのログの一画面で収まらないことがあります。
rails server で起動して、吐き出されるログを見ているのですが、一画面
に収まらない場合は上にはみ出してしまったものを見ることができません。

development.log で見れるのかと思っていたのですが、development.logって
rails console で使ったもののログは残りますが、サーバーにアクセスされた際のログは残らない?のでしょうか?
development.logを見てもそれっぽいものが残っていませんでした。

どなたかいい方法ご存知でしたら教えて頂けますと幸いです。
0962nobodyさん2010/12/07(火) 11:25:33ID:???
Railsでデバッグをする7つの方法 - Hello, world! - s21g
http://blog.s21g.com/articles/212

0963nobodyさん2010/12/07(火) 20:05:58ID:???
>>956
レスあんがと。
SQL直書きの話ではなくて、関連名を使ったときのデフォルトの命名仕様がイケてないと思ってて
他の人はどう思ってるのかなと書き込みしました。
SQL直書きを気にする人は少ないのかな?
0964nobodyさん2010/12/07(火) 20:27:42ID:???
1.9のこの書き方、コロンが向き当ってるとなんか落ち着かんな
foreign_key: :create_user_id
って思うのは俺だけか
0965nobodyさん2010/12/07(火) 20:30:16ID:???
>>963
だってそれを気にして何の意味があるのかわからんもん
0966nobodyさん2010/12/07(火) 20:47:33ID:???
>>964
仲間発見。
09679592010/12/07(火) 21:00:43ID:4CuEmOpR
常時、Windowsで使いたいです。

Mongrelが、サービスに登録できてよさそうだったんですが
Ruby1.9では対応していなかったり。。

Apacheも考えましたが、うまく設定できず(泣)
0968nobodyさん2010/12/07(火) 21:42:22ID:???
>>964
キモイね
0969nobodyさん2010/12/07(火) 22:01:50ID:???
3.0.3で
has_many :table_a
の設定しているテーブルがあるのですが
table_b.table_a=[]
や
table_b.table_a.clear
を実行しようとすると
undifiened method 'eq'
というエラーが
出てしまうのですが
対処法知りませんか?

lib/active_support/whiny_nil.rb:48:in 'method_missing'
lib/active_record/associations/has_many_association.rb :78:in 'delete_records'
lib/active_record/associations/association_collection.rb:222:in 'block in delete'
lib/active_record/associations/association_collection.rb:525:in 'remove_records'
lib/active_record/associations/association_collection.rb:158:in 'block in transaction'


rails2 からの移行です。
0970nobodyさん2010/12/07(火) 22:23:10ID:???
>>969

lib/active_record/associations/has_many_association.rb は
relation.where(relation[@reflection.primary_key_name].eq(@owner.id).
なので、relation[@reflection.primary_key_name] が nil になっている。

set_primary_key がらみでなにか間違えてるんでは?
レス数が950を超えています。1000を超えると書き込みができなくなります。