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

【RoR】Ruby on Rails Part14

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/02/18(土) 00:34:00.31ID:9HHBFqZR
前
http://kohada.2ch.net/test/read.cgi/php/1320393984/

■参考サイト
<英語>
本家:http://rubyonrails.org
API document:http://api.rubyonrails.com/
開発者のblog:http://weblog.rubyonrails.org/
参考wiki:http://wiki.rubyonrails.org/rails
http://ruby-toolbox.com/
http://rubygems.org/
http://agilewebdevelopment.com/plugins/top_rated

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

http://find.2ch.net/?STR=heroku&COUNT=10&TYPE=TITLE&BBS=ALL
0267nobodyさん2012/03/24(土) 20:33:07.23ID:???
> 複数の候補
0268nobodyさん2012/03/25(日) 09:14:36.10ID:???
RORのポケットリファレンスって使ってる人いる?あれって便利かな?
0269nobodyさん2012/03/25(日) 21:34:11.27ID:???
[Rails] query-reviewerでRailsアプリのボトルネックを見つける
http://d.hatena.ne.jp/tkng/20080811/1218442298

SpecialWarningというプラグイン
http://d.hatena.ne.jp/authorNari/20090205/1233840189

N+1問題などを監視してパフォーマンスを改善するRailsプラグインBullet
http://blog.digital-squad.net/article/149685338.html

複合キー
compositekeys ActiveRecord Composite Primary Keys
http://compositekeys.rubyforge.org/

Ruby on Rails を高速化する
N+1 クエリー問題を解消する
http://www.ibm.com/developerworks/jp/opensource/library/os-railsn1/

現実の世界の Rails、第 3 回: ActiveRecord を最適化する
一般的なパフォーマンスの問題を解決する
http://www.ibm.com/developerworks/jp/web/library/wa-rails3/

eager loadingって何? - おもしろWEBサービス開発日記
http://d.hatena.ne.jp/willnet/20090303/1236093728

N+1問題は、ORMの典型的なパフォーマンス問題
http://dev.ariel-networks.com/articles/workshop/rails-activerecord/
0270nobodyさん2012/03/25(日) 22:39:24.02ID:???
RoRで作ってるサイトをスマフォ対応させたいのだけど
おすすめの方法ってあります?
0271nobodyさん2012/03/25(日) 23:50:55.93ID:???
https://github.com/jpmobile/jpmobile
0272nobodyさん2012/03/26(月) 14:12:39.10ID:???
rspecについての質問なのですが、
関数呼び出し後に検証する普通のテストとshould_receiveによるモックテストとを
同じレベルで書こうとした際に、テスト対象となる関数を呼び出すところが
beforeでもafterでもうまくいかないように思えるのですが
皆様どのようにテストをされておりますでしょうか。

例としましては、以下のような場合です。

describe User do
describe '#wait' do
#before { subject.wait(room) }
let(:room){ mock_model(Room) }
subject { User.new }
it "引数のroomのwaitが呼ばれること" do
room.should_receive(:wait)
end
its(:room) { should eq room }
#after { subject.wait(room) }
end
end
0273nobodyさん2012/03/26(月) 21:19:48.66ID:???
http://twitter.com/babie/status/184234337284259840

Ruby On Rails ピチカート街道 - h( ... ) でHTMLエンコード -
http://rubist.blog77.fc2.com/blog-entry-36.html

Route 477 - Rails3に「デフォルトでHTMLエスケープする機能」が入ったらしい
http://route477.net/d/?date=20091013
0274nobodyさん2012/03/27(火) 00:15:20.95ID:30mhKm6R
urlのクエリを持ったままドメインだけリダイレクトかけたいのですが、どうすればできますか?
サーバー側でやればいい話なのですが、古いサイトにも一応アクセスできるようにRails側でクッキーの有無を判断して振り分ける必要性がある悩んでいます
0275nobodyさん2012/03/27(火) 04:02:07.49ID:???
今日rorの書籍を買いに行くから、オススメ教えて(´・Д・`)
0276nobodyさん2012/03/27(火) 09:18:43.69ID:K7bWlZBo
>>274

Railsを挟む理由が旧サイトアクセス用Cookieの有無を判定したいから
であれば、Apacheで SetEnvIf Cookie と RewriteCond %{ENV:name} を
組み合わればいいと思うのだが。
0277nobodyさん2012/03/28(水) 03:08:55.44ID:???
昨日誰も教えてくれなかったから、買わなかったけど、今日もrorの書籍を買いに行くから、オススメ教えて(´・Д・`)
0278nobodyさん2012/03/28(水) 15:43:44.62ID:???
Rails 3.2.3.rc1 has been released.
IMPORTANT
This release changes the default value of config.active_record.whitelist_attributes to true.
This change only affects newly generated applications
http://weblog.rubyonrails.org/2012/3/27/ann-rails-3-2-3-rc1-has-been-released/
0279nobodyさん2012/03/29(木) 07:57:36.34ID:???
>>277
日本語に翻訳してる間にロルのバージョン上がっちゃうからなあ
英語でよかったらお勧め紹介するけど
0280nobodyさん2012/03/29(木) 15:16:05.13ID:???
rails.app by Yehuda Katz ? Kickstarter
Let's make Rails on OS X easy again!
http://www.kickstarter.com/projects/1397300529/railsapp
0281nobodyさん2012/03/30(金) 08:20:23.45ID:8zaEmJo9
Railsのmass assignment対策 - うんたらかんたら日記
http://d.hatena.ne.jp/rochefort/20120314/p1

config.active_record.whitelist_attributes will create
an empty whitelist of attributes available for mass-assignment
security for all models in your app.
http://guides.rubyonrails.org/configuring.html

As such, your models will need to explicitly whitelist or blacklist
accessible parameters by using an attr_accessible or attr_protected declaration.
http://guides.rubyonrails.org/security.html
0282nobodyさん2012/03/31(土) 20:53:25.86ID:6KRM2cA3
activerecordとmysql2をgemでインストールするにあたって
ぐぐったら何か問題あることはわかったんだけども
具体的に何をどうしたらいいのかよくわからないから
お母さんが説明するみたいに優しく教えて
0283nobodyさん2012/04/01(日) 11:53:58.85ID:hlU1wyGV
railsってjavascriptをコントローラごとにわけてるけど、生成されたhtml見てみると結局全部のコントローラのjs読み込んでるじゃん?
そもそもコントローラごとにJS分けるって意味あるの?
0284nobodyさん2012/04/01(日) 12:18:45.93ID:???
あるから分けたんだよ
0285nobodyさん2012/04/01(日) 12:29:59.58ID:hlU1wyGV
>>284
知ってるなら教えてー
0286nobodyさん2012/04/01(日) 13:35:07.34ID:HW3lmsFv
別れていたほうがメンテしやすい。

CoffeeScriptからの変換でそれぞれのファイルの中身が別々の
名前空間(関数オブジェクトローカル)に収まるようになったので、
同じ名前をそれぞれのファイルで使っても名前の競合問題が
発生しなくなっている。

で、使うときは連結した状態のものを1HTTPリクエストで読み込む。
0287nobodyさん2012/04/01(日) 14:27:22.60ID:hlU1wyGV
>>286
そうだったのか!ありがとう!
0288nobodyさん2012/04/02(月) 22:12:34.20ID:???
Rubyの勉強を始めようと思うのですが
HTMLやCSSも覚えないといけませんか?
0289nobodyさん2012/04/02(月) 22:16:49.44ID:???
Railsでウェブアプリを作るなら必要。
Javascriptも覚えましょう。
0290nobodyさん2012/04/03(火) 02:26:52.84ID:vczNQCNm
Railsは2.x ぐらいまでしか触ってなくて、たまにこのスレをチラミスる程度ですが、
以下のスレに

【IT】プログラミング言語「Ruby」が国際規格に認定
http://uni.2ch.net/test/read.cgi/newsplus/1333369330/

以下のような書き込みがあったのですが、

44 :名無しさん@12周年 [] :2012/04/02(月) 21:43:32.97 ID:TClUUd9q0
Rubyは、単なるスクリプト言語で陽が当たらなかったのだが、それに目を付けた
Ruby on Railsで世界中に一躍有名。ところがその処理系の遅さが嫌でJavaで書いた
JRubyが今の主流。日本生まれだから応援したいが、すっかり他国の賢いプログラマに
改良されちゃっている。

いまって JRuby が主流なの? MatzRuby の 1.9.3 とかをみんな使っているわけではないの?
JRuby も面白いと思うけど、主流というのは初めて聞いたのだが・・・
0291nobodyさん2012/04/03(火) 06:45:44.62ID:???
>>290
5年前の話だろ


0292nobodyさん2012/04/03(火) 08:01:42.52ID:???
log_levelを:errorなどにすると例外内容だけでパスなどが表示されないんですけど表示する方法はありますか?
0293nobodyさん2012/04/04(水) 01:05:03.14ID:???
railsにrakeタスク追加してみたけど、遅すぎだろ・・・
0294nobodyさん2012/04/05(木) 05:17:00.55ID:58gh6YOi
池澤あやか グラビアアイドルレポート
http://www.sponichi.co.jp/gravure/special/ir_2010/ir_ikezawaasuka/KPhotoNormal20100731176_p.html

第1回 RubyでFacebookアプリ作るぞ! - Facebook開発者の為のサポートサイト | fb.developers'+
http://fb.dev-plus.jp/column1/column1_1/
0295nobodyさん2012/04/11(水) 17:05:03.76ID:???
すいません。
modelのvalidationをかんがえてるですが
単一のカラムがユニークな値であるときを検証するのは
validates_uniqueness_of :name
とすれば問題ないのですが
例えばカテゴリーのカラムが同じ値かつ、カラムの名前が同じ値の時にvalidationで検証し、エラーをだすにはどのようにしたらよいのでしょうか?
例を示してくれるとありがたいです。
0296nobodyさん2012/04/11(水) 22:28:12.81ID:???
>>295
カスタムバリデーションを使い給え
0297nobodyさん2012/04/12(木) 07:49:35.54ID:???
ボクも初心者ですがこれじゃ駄目かな
validates :name, :uniqueness => { :scope => :category }
0298nobodyさん2012/04/12(木) 11:48:53.84ID:???
前から気になってたんだけどunique index 張るだけじゃダメなん?
0299nobodyさん2012/04/12(木) 14:29:25.98ID:hOYmozjk
validates :uniquenessはuniquenessを保証しないのでDBにindexをつけましょう!
http://memo.yomukaku.net/entries/187

http://stackoverflow.com/questions/1633297/how-do-i-validate-two-fields-for-uniqueness

validates :zipcode, :uniqueness => {:scope => :recorded_at}
http://stackoverflow.com/questions/3276110/rails-3-validation-on-uniqueness-on-multiple-attributes
0300nobodyさん2012/04/13(金) 09:42:54.54ID:???
僕もバリデーションのことで聞きたいんですが、
パスワードを入力したレコードを新規登録するとします。
そのあと、レコードを更新するとき、そのパスワードの値をみて
違ってたら、エラーを出すバリデーションってどうやってやるかわかりますか?
0301nobodyさん2012/04/13(金) 09:45:22.90ID:???
それはバリデーションじゃないので普通に比較して自分でエラー出してください
0302nobodyさん2012/04/13(金) 11:38:05.06ID:???
流出に備えて、生のパスワードは保存しない。暗号化する。
作ってる自分にも分からないように。
0303nobodyさん2012/04/14(土) 02:33:39.40ID:???
他人を演じて一人で繰り返し質問してお礼も言わない
0304nobodyさん2012/04/14(土) 02:43:31.69ID:???
ありがとうございます
0305nobodyさん2012/04/14(土) 10:41:00.37ID:???
ありがとうございます
0306nobodyさん2012/04/14(土) 10:59:53.69ID:???
初心者のぼくちんにも教えてほしい。
map.resourceで作られるルートなんだが、
view側で<%= edit_slip_journal_path(@slip, @journal) %>が記述されているとして、これにパラメータを渡すかっこいいやりかたってないの?
:actionや:controllerのハッシュに分解してurlを記述すればいいんだが、
あまり見栄えがよくないんだが
0307nobodyさん2012/04/14(土) 13:13:54.35ID:???
死ね
0308nobodyさん2012/04/14(土) 15:47:27.85ID:v9j0Vyqy
>>303
>>307

荒らすな
0309nobodyさん2012/04/14(土) 16:11:12.89ID:???
馬鹿な質問はスルーで
0310nobodyさん2012/04/14(土) 16:31:24.74ID:v9j0Vyqy
>>309
君は馬鹿だからきたいしてない
どーせ無理だし
0311nobodyさん2012/04/14(土) 16:38:34.98ID:JiKNlWk7
末尾にハッシュで渡すとこうなるけど。

script/rails console
>> slip = Slip.first
>> journal = slip.journals.first
>> app.edit_slip_journal_path(slip, journal, a: 1, b: 2)
=> "/slips/1/journals/1/edit?a=1&b=2"
0312nobodyさん2012/04/14(土) 17:14:40.37ID:???
今度、倉庫の在庫管理アプリをまかされる事になりました。
各種ライセンス費用を節約するためにDB参照を1台に集約し
クライアントのセットアップの必要の無いwebアプリにしろとのお達しが。
更には、webサーバは今回新規に導入するけれど、
今後作成する他の業務webアプリと兼用させたいとか……
という訳で独断で以前使った事のあるRoRを使う事にし、
これからこのスレにお世話になります。

で、まずはサーバの基本設定ですが、他業務アプリとの干渉を避けるため
URIの/直下はapache管理にして/index.html内に業務毎のリンクを貼り、
/zaiko/以下をRoRの在庫管理アプリで使う予定です。
更には他のwebアプリも同様にパスを切って別のRoR、PHP等の
アプリで使えるようにしておきたいと考えています。
この場合、apacheとRoRの設定はどのようにしたらよいのでしょうか。
0313nobodyさん2012/04/14(土) 21:50:56.01ID:???
リバースプロキシ
0314nobodyさん2012/04/14(土) 21:52:40.94ID:JiKNlWk7
Passengerのバヤイ本家のリファレンスで
deploying rails to sub uri
セクションとか見れば。
03153122012/04/15(日) 01:03:32.95ID:en0ASpiL
313,314で大体答えが出ていますが
・unicorn + リバースプロキシ
・passengerで構築してhttpd confにRailsBaseURIを追加で設定
passengerの方がコンパイルするまでにyumとかで入れないといけない物が多いのでそこだけ手間ですが
超巨大サイトでもない限りややオススメかな
0316nobodyさん2012/04/15(日) 01:07:51.75ID:en0ASpiL
RSpecの挙動研究しているうちにこんなことになっているのを見つけたのですが
これって、やっぱ仕様的にRailsの挙動がおかしい様にしか見えないのですが
既出だったらすいません…

describe :FixtureLoadTest do
context :load_fixture do
fixtures :items

it "はspec中でfixtureのロードを行う" do
Item.count.should == 5
end
end
context :not_load_fixture do
it "はspec中でfixtureのロードを行う" do
Item.count.should == 0 # アイテム所持数は5個のままだったのでエラー!
end
end
end
0317nobodyさん2012/04/15(日) 11:05:14.44ID:???
rspecの設定にもよる
0318nobodyさん2012/04/15(日) 12:49:21.89ID:u7d2/RHN
OSX(Snow Leopard)でやっとRuby1.9.3 とRuby on Rails3.2.3が使えるようになった・・・。
ちょくちょく覗こう、ROM主体で。
0319nobodyさん2012/04/15(日) 13:59:02.74ID:X8cuaQo/
herokuで1つのアカウントに複数のアプリを登録できますが、DBの無料容量分などを考えるとアプリごとにアカウントを分けた方がいいように思いました。
同一のアカウントを使いまわす場合と、アプリごとにアカウントを分ける場合とで利点、不利点などありますか?
実際にherokuで複数のWebアプリを運用してる方はどういう方法で運用してますか?
0320nobodyさん2012/04/15(日) 23:00:11.18ID:en0ASpiL
>> 317
環境を書いておきますが、rspecの設定の問題ではなくて
ActiveRecorsのTestFixtureモジュールのコード上の問題ですね

Rails3.2.2
rspec2.9.0

rspecの設定でどうにか出来る場合は教えていただきたいです
地味に困っているので
0321nobodyさん2012/04/15(日) 23:16:16.65ID:Z0QKXNCP
Railsの仕様の問題ですか? という問いでそれが実際に
AR::TestFixturesの仕様の問題と分かったのなら、
それで終了のような気もするけど、

代替物(Factory GirlとかFabricationとかMachinistとか)は使えないの?
0322nobodyさん2012/04/16(月) 00:27:57.36ID:???
Rails3.1な環境です。
coffeescriptってコンパイル時に自動的にに即時関数でラップするじゃないですか?
色んなjsで使う共通クラスを別ファイルで定義しようとしたときに、これがすごく邪魔になってしまうと思うのだけど、みんなどうしてる?
0323nobodyさん2012/04/16(月) 00:50:53.67ID:DQzSVka/
windowsオブジェクトにぶらさげるとか。
0324nobodyさん2012/04/16(月) 00:51:20.95ID:DQzSVka/
window だ。なぜs付けたし。
0325nobodyさん2012/04/16(月) 16:24:59.22ID:???
railsアプリでデータベースのファンクションとかって使う?
0326nobodyさん2012/04/16(月) 19:33:48.76ID:???
>>325
普通は使わないな
全文検索とか特殊な用途には拡張構文を使ったりするだろうけど
0327在庫”管理”2012/04/17(火) 01:51:27.31ID:???
>313-315
トン
リバースプロキシでmongrelに繋げるのが手っ取り早そうですね。
ググってトップに出てきたページにRailsでの設定方法も書いてあるし。

まだ開発環境のインストールの途中までしか進んでませんが。
というか、gemでのネット参照がマトモに動かず、Railsのインストールで止まる。
外部ネット参照が制限されてる環境でのインストールは厳しいなぁorz
ROM付きの本でも買って来た方が早かったか。
0328nobodyさん2012/04/17(火) 07:29:58.38ID:???
え、なんでまたmongrelなの?いまさら
0329nobodyさん2012/04/17(火) 08:12:57.58ID:???
thin!
0330在庫”管理”2012/04/18(水) 23:23:08.26ID:???
>328
まだプロジェクトが動き始めたばっかりだからな。
しかも5年位前にしばらくやってた時のうろ覚えな知識とぐぐる先生をフル動員して、
それでもバージョンの違いとかに戸惑いながらなんとかやってる状態だし。
あくまでも接続台数も使用時間も限られる業務用途なんで、
あんまり速度は求められてないというのも気楽なところ。
ただ、他業務との兼用サーバになる事だけは考慮しないとダメだけど。

今日はとりあえず端末設定画面が動くようになった。
Aptana studio 3からweb鯖を起動しようとしてもエラーで動かず、
コマンドラインから rails server を叩けば動くという訳分からん状態なんだが。
その状態で apache のリバースプロキシを通しての接続も確認出来た。
しかしこの、Aptana3 からApplicationControllerを読み込めてないってのは何なんだろ。

明日はとりあえず在庫データ用の各種モデルの作成と、
基幹サーバからデータを引き取って業務サーバに突っ込むVBアプリを組むかなぁ。
03313222012/04/18(水) 23:52:41.63ID:???
>>323
ありがとう。それでいくことにします!
0332nobodyさん2012/04/19(木) 12:12:27.17ID:???
mongrelって2006年で止まってるのな。
作ってた人が抜けたんだっけか。懐かしい。

今なら Passenger か unicorn
Passenger はなかなか息が長いね
0333nobodyさん2012/04/19(木) 18:58:28.25ID:???
mongrel2 ってのが 2010年に出たんじゃないの?

さまざまな言語に対応するWebアプリケーション用サーバー「Mongrel2」リリース

http://sourceforge.jp/magazine/10/09/03/0948237

自分も 2009年ぐらいから rails はさわっていないので、
最近の状況はよくわからないけど
0334nobodyさん2012/04/19(木) 20:26:00.28ID:???
rails初めて一週間です。
異なるviewページのフォームで送ったデータを同じメソッドで処理し、そのエラー結果を異なるviewにかえしたいとと持っています。どうやればうまくまとめられるでしょうか?困ってます。
view側のフォームで強引なパラメータを持たして、メソッド側でそれを
場合分けして、処理すれば可能なんですが、それでいいのでしょうか?
よろしくお願いします。
0335nobodyさん2012/04/20(金) 01:21:43.21ID:CXxaVPIV


日本最大級の料理サイトを運営するIT企業社員
http://www.news-postseven.com/archives/20120405_99964.html
東大を卒業後、投資コンサル会社を経て、現在は料理サイト運営で有名なIT企業に勤務
http://www.news-postseven.com/archives/20120409_100637.html
0336nobodyさん2012/04/20(金) 08:36:57.62ID:???
>>334
Railsより先に日本語の勉強をした方が良さ気
0337nobodyさん2012/04/21(土) 15:30:29.71ID:???
>334
やり方は大きく分けて2通り。
1)どこのviewからのかが分かる情報を持たせて同じコントローラを呼び、
  view別にレンダリングする。
2)共通処理を行うクラスを用意し、処理メソッドをviewの呼び出し元の
  コントローラから呼び出す。
実装が簡単なのは前者だけど、他言語での経験上、後者の方が保守性、拡張性が高い。
単純にメソッドを呼ぶより、共通処理クラスを継承してコントローラを作るのがいいと思う。
0338nobodyさん2012/04/22(日) 01:50:59.85ID:19kYSa4n
初心者です。現在、rails3.2.3を触っています。
generate scaffoldで生成されるcontrollerのメソッドには全て
respond_to do |format| で
htmlのほかに、jsonでも出力されるようになっているようです。
htmlは分かるのですが、このjson出力というものは、
どう使うと便利、または正しいのでしょうか。

htmlだけでなくjson形式も出力する。デフォルトでこうなってるということは、
きっと素敵な使い方があるはずと思い、質問させて頂きました。
お恥ずかしい質問かもしれませんが、よろしくお願い致します。
0339nobodyさん2012/04/22(日) 04:48:37.68ID:???
外部apiになりますよーってはなし
外から使わないなら消した方後いいんじゃない?
0340nobodyさん2012/04/22(日) 07:10:27.68ID:???
Ajax
0341nobodyさん2012/04/22(日) 07:22:36.18ID:???
なるほと
0342nobodyさん2012/04/22(日) 08:01:33.71ID:???
本当はjsonで吐いた方が良いんだろうけど
JSでのHTMLへの整形が面倒でサーバー側でやってしまう・・・
0343nobodyさん2012/04/23(月) 20:36:08.95ID:???
file_columnつかってるいる人いますでしょうか?
rails2まではサニタイズのメソッドを
filename.gsub!(/[^\w\.\-\+_]/,"_")
に変えることによって日本語ファイルを扱えましたが、
rails3になって扱えなくなりました。どーもファイル名の複合エンコードが問題があるようです。どこを直せば文字化けしない日本語ファイルとして
あるかえるか検討もつきません。知ってるい人がご鞭撻宜しく。

0344nobodyさん2012/04/23(月) 21:05:33.66ID:???
元のでも変換しないと文字化けするけど。
\w のとこを [:word:] に変える。
それでも変換しないと文字化けする。
0345nobodyさん2012/04/23(月) 21:06:25.49ID:???
つか、railsじゃなくてrubyのバージョンが変わったからだろ
0346nobodyさん2012/04/23(月) 21:07:41.00ID:???
_ に置換するんだから文字化けしないか
0347nobodyさん2012/04/24(火) 00:46:01.84ID:???
>>344
だめでした
>>345
私もそう思ってruby 1.8.7と1.9.2で試しましたが
結果は同じでした。
0348nobodyさん2012/04/24(火) 02:46:11.65ID:???
>>343
オリジナルのファイル名を使う気がないなら
なんか固定文字列を適当に返せばいいだけじゃないの
ちなみに\wは1.8系だとひらがなにマッチするが1.9系はしない
文字コードの問題なら、
filename.toutf8
とか変換しとけばいい問題ではないの?
0349nobodyさん2012/04/24(火) 07:01:26.46ID:ZlbrLuYU
https://twitter.com/search/railsconf
0350nobodyさん2012/04/24(火) 11:41:03.64ID:???
Datetime型のorderでsyntaxエラーがでてつまってます。

datetime型のカラムを作成してデータをorder("カラム名")としたところエラーがでます
sqliteからmysqlに変えてもだめでした
updated_atなどは普通にorderできます
explainしてみても、作成したカラムもupdated_atもdatetime型になってました

Rails3.2.3でubuntu11.10 serverです
0351nobodyさん2012/04/24(火) 12:57:24.14ID:iDCAmQec
【Rails3】カラム名に使ってはいけない予約語を調べる - ふわふわRuby on Rails
http://d.hatena.ne.jp/zucay/20110120/1295490314

No Reservations about Keywords in Ruby on Rails
http://web.archive.org/web/20100418013011/http://www.yup.com/articles/2007/01/31/no-reservations-about-keywords-in-ruby-on-rails
0352nobodyさん2012/04/24(火) 13:42:47.16ID:???
>>351
それだ!
期限の意味でlimitってしてた
ありがとう!
助かりました
0353nobodyさん2012/04/24(火) 17:31:32.56ID:???
自作のcgiをつくったんですけど、cgiはrailsのどのフォルダ下におくのが
普通ですか?それとも置かない?
0354nobodyさん2012/04/24(火) 19:59:48.10ID:???
>>348
オリジナルの名前をつかいたいから苦しんでます。webを検索しても
日本語ファイル名を扱った成功例ってrails2なんですよね。
rails3でfile_columnを入れている方がいれば、日本語ファイルが
アップロード際、何もコードをいじっていなければ、アンダースコアに
日本語が変換されると思います。rails2と同じやり方ではむりでした 。
0355nobodyさん2012/04/24(火) 20:07:33.17ID:WxPv1Uxg
ファイルの名前はASCIIにしておいて、
理想のファイル名との対応をDBに持っておいて、
返すときにHTTPヘッダでそれを教えてやるくらいしか思いつかん。
0356nobodyさん2012/04/25(水) 01:03:23.36ID:???
has_many :through & ActiveScaffold で疑問なんですが、
Script <-> UserScript <-> User みたいな relation を管理する際に、
Scriptの更新を直接Userに伝播したくない場合、どのように実装するのが普通でしょうか?

なぜ伝播したくないかというと、例えばユーザAがscriptを作成して、
script = Script.new(:src => 'puts hello world!')
script.save # id=1

ユーザA,B,Cがそれを利用したとします。
script.users << user_a
script.users << user_b
script.users << user_c

その後、オーナーであるユーザAがscriptの内容を変更すると、ユーザB,Cにとっては意図しない変更になります。
script = Script.find(1)
script.update_attributes(:src => 'puts uhehe!')

(1) Script にcreated_by カラムなどを作成して validates_uniquneness_of :src, :scope => :user_idで管理し、
srcはコピーする事は考えましたが、Script.srcはランキングを作るためにユニークに保ちたいのです。

(2) created_by カラムを用意せず、既存のデータに変更を加える場合にupdate ではなくcreate する独自の処理を加えて実装する
事も考えましたが、ActiveScaffold ではハンドリングできなくなってしまいます(たぶん)。

(3) 別途ランキングのためのsrcをユニークに管理するテーブルを用意する実装も考えましたが、
ほとんど同じカラムを持つテーブルが2つできてしまうので冗長過ぎる気もします。

Scriptは重複しにくいので例が悪かったかも知れませんが、もう少しカラムが多く、重複が発生しやすい場合でも
どのように実装するのが良いのでしょうか? どうぞよろしくお願い致します。
0357nobodyさん2012/04/25(水) 05:57:44.41ID:???
>>354
使ってる file_column のバージョンが古いとか。
original filename の取り出し方が確か変わってたような
0358nobodyさん2012/04/25(水) 06:02:32.44ID:???
>>356
ActiveScaffold やめるとか。
後は updated_by みたいなカラム用意して、Script の方は acts_as_versioned 使うとか。
0359nobodyさん2012/04/25(水) 06:51:16.42ID:???
どちらにせよ、ActiveScaffoldだけで、全くコード書かないのはムリ。
0360nobodyさん2012/04/25(水) 08:42:39.76ID:???
>>354
file_columnでなくRailsかrubyのレベルで話ができないのか?
>rails2まではサニタイズのメソッドを
>filename.gsub!(/[^\w\.\-\+_]/,"_")
>に変えることによって日本語ファイルを扱えましたが、
この処理が日本語を消しているだろ
1.8系はKCODEとencoding一致していれば\wが全角文字に一致するから消されないが
1.9系は\wが全角文字にマッチしないからどうやっても消える(Rubyの仕様が変わった)
1.8でも消えるならKCODEとfilenameのencodingを一致させる必要がある
0361nobodyさん2012/04/25(水) 09:05:43.19ID:???
>filename.gsub!(/[^\w\.\-\+_]/,"_")

というか何がどうサニタイズなのか。
0362nobodyさん2012/04/25(水) 09:29:05.53ID:???
>>358 >>359
やはりActiveScaffoldそのままは無理でしたか…色々やってみます。
0363nobodyさん2012/04/25(水) 10:50:55.43ID:???
>>360
>この処理が日本語を消しているだろ
これはわかってますね。
>1.8でも消えるならKCODEとfilenameのencodingを一致させる必要がある
1.8でも消えたんで、railsのバーションなのは間違いないと思います。
params[:テーブル名][:ファイルカラム名].original_filename.force_encoding("UTF-8")でUTF-8に強制的に変換したあと、paramsのハッシュでインスタンス化するんですけど、そこで必ず日本語がアンダースコアになってしまします。成功例もないし、私のちからではお手上げかも。
0364nobodyさん2012/04/25(水) 11:06:50.70ID:???
>>361
メソッド自体、サニタイズって名前のものなんですよね。file_columnは通常日本語のファイル名はハイフン化されてしまうんですが。
そのハイフン化される部分filename.gsub!(/[^a-zA-Z0-9\.\-\+_]/,"_")を
filename.gsub!(/[^\w\.\-\+_]/,"_") に変えることで対処することができました。だけど、
rubyがエンコードに
ついてのクラスを加えたことで、railsもそれに対応しました。それによって
file_columnも以前のようにコートの一部をfilename.gsub!(/[^\w\.\-\+_]/,"_") に修正するだけでは、日本語ファイルを扱えなくなりました。そんな感じです。

0365nobodyさん2012/04/25(水) 12:33:33.10ID:???
>>363
まず1.8でやっているのか?
force_encodingって1.9にしかないと思うが
1.9の場合、\wは日本語にマッチしないから
そのコードだと日本語消えるぞ

1.8の場合、$KCODEはuを指定している?
指定してないと\wは日本語にマッチしないから日本語消えるぞ

p params[:テーブル名][:ファイルカラム名].original_filename
とかで変換前にどうなってるのか見たほうがいいんじゃねーの
0366nobodyさん2012/04/25(水) 16:44:08.18ID:???
>>362
というか、updateメソッドちょっと変えるだけだし、全然難しくないと思う。
それもできないとかはないよね…さすがに
■ このスレッドは過去ログ倉庫に格納されています