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

【RoR】Ruby on Rails Part13

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/11/04(金) 17:06:24.32ID:???
■前
【Ruby】Ruby on Rails Part12
http://hibari.2ch.net/test/read.cgi/php/1311050686/

■参考サイト
<英語>
本家: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://twitter.com/dhh
http://www.loudthinking.com/
0002nobodyさん2011/11/04(金) 17:11:44.83ID:???
関連スレ

Ruby 初心者スレッド Part 46
http://hibari.2ch.net/test/read.cgi/tech/1317790320/

Rubyについて(アンチ専用) Part004
http://hibari.2ch.net/test/read.cgi/tech/1249737531/

Rubyについて Part 45
http://hibari.2ch.net/test/read.cgi/tech/1317639700/

[PHP][フレームワーク]CodeIgniter Part2
http://hibari.2ch.net/test/read.cgi/php/1299595202/

Zend Framework Part5
http://hibari.2ch.net/test/read.cgi/php/1297364669/

0003nobodyさん2011/11/04(金) 17:11:58.02ID:???
ふう・・・
0004nobodyさん2011/11/04(金) 17:14:18.67ID:???
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
0005nobodyさん2011/11/04(金) 20:02:26.80ID:???
乙かれちゃーん
0006nobodyさん2011/11/04(金) 20:25:48.98ID:???



           皆様へのお願い

  このスレッドは高次機能障害をもたらす
病理の臨床実験のために立てたものです。

  被験者と研究員のやり取りに使うため、
書き込み等は自重されるようお願いいたします。
もし、書き込み等をすることで不愉快な思いをされましても、
当研究所は責を負いかねます。



                      (社)京都微生物研究所


0007nobodyさん2011/11/05(土) 00:01:44.07ID:???
Ruby on Railsはやっぱいろいろなものの詰め合わせだから、どっかしらバージョン違いが起こっちゃって初心者には辛いっす・・・
0008nobodyさん2011/11/05(土) 00:04:40.89ID:???
>>7
そんなあなたにrvm
0009nobodyさん2011/11/05(土) 08:02:01.02ID:???
>>7
そんなあなたにbundler
0010nobodyさん2011/11/05(土) 10:47:38.76ID:???
form_forのヘルパーでモデルを更新した後、再び同じページに戻ってくると
form_forの中に更新前のデータが記録されています。
キャッシュだとおもうんですが、簡単にフォーム内に残されたデータを
消す方法ってありますか?
よろしくお願いします。
0011nobodyさん2011/11/05(土) 12:35:05.83ID:???
ブラウザの挙動もあるので、どの環境でもきちんと消すのは少し面倒かも。ワンタイムトークン発行したりとか。

簡単な方法だと履歴を消すという手はあるが。
0012nobodyさん2011/11/05(土) 12:56:26.67ID:???
>>11
例として、このレスの下のフォームで書き込むボタンを押した後、このページに
自動的に遷移してくると、書き込む前の内容が残されてる感じです。
だから、間違って書き込むを連打すると、validationが働かず、同じような
ものが何度でも連続して作られてしまう感じです。

うーん、なんとかならないのか・・・
expire_pageとかあるみたいだけど、よくわかんないです。
0013nobodyさん2011/11/05(土) 13:09:16.49ID:???
「自動的に遷移してくると」というのが不明。
自分でそう書かない限り、そうならないので。
0014nobodyさん2011/11/05(土) 13:15:44.94ID:???
Validationが働かないのは、単にバグってるだけ
0015nobodyさん2011/11/05(土) 14:20:07.01ID:bMCYQ4Ak
rails3からrails Plug-inはgem化推奨だそうなので
移動させようと作業しているのですが
gemの中のrakeタスクを認識させる方法がわかりません
どなたかヒントを頂ければ幸いです
0016nobodyさん2011/11/05(土) 14:34:57.70ID:???
>>13
単にcreateのメソッドを使った後、もとのページにrender で指定しているだけです。
つまりform_forのアクションがcreate
def create
処理
 render :action=> 'list'
end
って感じ
listはform_forのヘルパーがあったページ

>>14
働いてます
0017nobodyさん2011/11/05(土) 15:25:51.51ID:???
>>16
form_for の第一引数に指定しているオブジェクトに値が入ってるからでしょ
値を表示させたくないなら、そのオブジェクトを破棄して新しく new するとか
0018nobodyさん2011/11/05(土) 15:37:57.57ID:???
createでlistをrenderするのが間違ってる。
リロードしなきゃいけないし。
リダイレクトするのが普通かな。

もしくはそのままの実装でどうしても行くなら、saveの後で
@data = Data.new
すれば良い
0019nobodyさん2011/11/05(土) 15:40:35.03ID:???
リロードしないとするとcreateの中でまたfindしてるのかな?
なんか不毛すぎるし、Railsっぽくないな。
0020nobodyさん2011/11/05(土) 17:01:26.43ID:???
>>17
form_forにのフィールドの初期値を空白にすることによりcreateされて戻ってくる
ときに更新前の値が反映されなくなりました。newするのも考えましたが、非効率な感じがしたので。
取り合えす、できましたのでありがとうございます。


>>18
あ、redirectでも同じですよ。ちなみにscaffoldをつかってません。

>>19
createの中でロードも試しましたね。そしてrender
初めは単にredirectだったんですけ、どちらも結果がおなじでした。

0021nobodyさん2011/11/05(土) 17:05:20.96ID:???
redirectで同じって、そんなわけねーだろw
0022102011/11/05(土) 17:12:07.37ID:???
>>21
じゃあ、下のフォームと同じものを作ってdbで更新した後、redirectかrenderで
戻ってきてください。僕の言ってることが分かると思いますよ。
0023nobodyさん2011/11/05(土) 18:02:49.58ID:???
再現性のあるソースの最小構成みせてみてよ。
案外ここは問題ないって思ってるとこが問題だったりするから
再現する状態の全てを見せたほうが話がはやいよ。
0024nobodyさん2011/11/05(土) 18:09:44.28ID:bdmivVUP
>>15

http://api.rubyonrails.org/classes/Rails/Railtie.html
Loading rake tasks and generators

MyPlugin::Railtie というクラスを定義して、rake_tasks メソッドを使う。

# れいるてぃー、じゃなくて、れいるたい、ね。
0025nobodyさん2011/11/05(土) 22:25:53.66ID:???
>>20
> form_forにのフィールドの初期値を空白にすることにより
この方法だともう一回submitされたときにcreateじゃなくてupdateが呼ばれるはずだが…
まぁ動いてるならいいのか
0026nobodyさん2011/11/06(日) 02:04:49.32ID:???
【MSCB MSSO】会社死期報 part 25【粉飾決算】
http://hato.2ch.net/test/read.cgi/venture/1305511296/
0027nobodyさん2011/11/06(日) 12:56:50.64ID:70F4kdqb
http://www.nihilogic.dk/labs/canvas_sheet/HTML5_Canvas_Cheat_Sheet.png

http://design-develop.net/web-design/html5.html
0028152011/11/06(日) 17:00:30.46ID:GUoZmNqn
>>24
ども!情報有り難うございます
1日試行錯誤した結果なんとか動かせるようになりました
0029nobodyさん2011/11/07(月) 00:24:53.97ID:???
どうしてもfixtureがうまくいかない
郵便番号のデータ12万件くらいなんだけど、mystringという文字列がはいったデータが2件だけできるだけ

環境はruby1.8.7 rails2.3.14 ubuntu11.04です
データベースはsqlite,mysqlで試したけど同じでした
0030nobodyさん2011/11/07(月) 00:30:43.70ID:???
そんなんで分かるわけないだろ
0031nobodyさん2011/11/07(月) 00:55:17.92ID:???
>>30
すいません
聞き方を変えると、日本語のテキストデータをMyStringsに変えてるのはどこなんでしょうか
たぶんencoding関係なのかなと思ってるんですがどのあたりをみたらいいか検討がついたら教えてください
0032nobodyさん2011/11/07(月) 01:07:48.16ID:???
MyStringsって何よ
0033nobodyさん2011/11/07(月) 01:24:12.45ID:???
よく考えろ

本当にRailsが自分が入れた(と思ってる)文字データを、
勝手にMyStringsという文字列に変換してるのだろうかと。
もしかしてそれは、自分がやった何かがおかしいんじゃないかと。

自分がやった何かがおかしいなら、
その何かを示さないと、
全く関係のないほかの人には分からないんじゃないかと。
0034nobodyさん2011/11/07(月) 08:04:30.46ID:???
そういえばfixtureって数年使ってないな
0035nobodyさん2011/11/07(月) 09:48:31.15ID:???
ruby on rails を勉強したいんですけど
どこかよいチュートリアルサイトないですか。
できればウィンドウズでやりたいです。
0036nobodyさん2011/11/07(月) 09:54:12.97ID:???
Four Days on Rails は対応バージョンが古すぎるかな。
0037nobodyさん2011/11/07(月) 09:56:22.27ID:???
http://www.rubylife.jp/rails/
を見ることにしました。
0038nobodyさん2011/11/07(月) 10:27:20.80ID:???
>>37
そのサイト、全然記事ないやん…。何もできんぞそれじゃ
0039nobodyさん2011/11/07(月) 11:06:35.57ID:???
ヒント:アフィ
0040nobodyさん2011/11/07(月) 11:08:37.00ID:???
それ明らかにアフィリ・広告・SEOのためのサイトじゃんかよ

そういう記事を○○円で書く仕事みたいのよく募集してるよ

質問者が運営者だろ。さりげなくURLを貼ったつもりだろうけど
0041nobodyさん2011/11/07(月) 11:20:31.53ID:???
暗号化されたパスワードを含むオブジェクトを
CookieStoreに保存しても平気でしょうか?
session[:user] = User.find(1)
それともユーザー名やIDのみ保存すべきでしょうか?
session[:name] = User.find(1).name
0042nobodyさん2011/11/07(月) 11:24:28.96ID:???
ユーザ名だけにしておきなさい
0043nobodyさん2011/11/07(月) 12:03:38.46ID:???
なんでそんなの入れたいん?
キャッシュしたいという事かな。
オブジェクト入れるのはやめときな。

Railsってあまりクッキー使わないよね。
0044nobodyさん2011/11/07(月) 12:29:00.48ID:???
ユーザ管理する程でもないサイトでリスト中の更新部分をハイライトしたくて
前回表示日時をクッキーに入れたりしたことはあるな。
0045nobodyさん2011/11/07(月) 12:38:37.39ID:???
このスレは前スレのブックマーク投稿クソ野郎などウェブ系スパム業者に狙われています
0046nobodyさん2011/11/07(月) 12:49:53.59ID:???
cookie使用の有無は、rails関係ないだろ
0047nobodyさん2011/11/07(月) 13:30:26.20ID:???
Railsに限らずクッキーに情報本体入れる実装は総じて糞って結論がでてると思うんだが。
0048nobodyさん2011/11/07(月) 14:38:22.93ID:???
railsでもcookie_storeをactiverecordにすれば
cookieにセッションIDだけ入ってセッション情報はDBに入るだろ
0049nobodyさん2011/11/07(月) 16:20:14.66ID:???
ふつーはそうする
どういうことか分からないままデフォルトで運用する奴はうんこちんちん
0050nobodyさん2011/11/07(月) 17:38:13.27ID:???
データが量的に入るならいいと思うんだが
暗号鍵は十分長いからサーバーがクラッキングされない限り復号はできないだろ
DBにアクセスするより軽いし
普通は入らないが
0051nobodyさん2011/11/07(月) 18:06:27.59ID:???
productionではmemcachedに入れてる。
その他はdb storeで。

0052nobodyさん2011/11/07(月) 18:32:25.52ID:???
そのうちHTML5のWebStorageだかなんかを使った実装も用意されるようになるんだろな。
0053nobodyさん2011/11/07(月) 20:24:06.72ID:???
gmailってwebstrageを使ってるよね。
0054nobodyさん2011/11/07(月) 20:38:24.97ID:???
gmailはrails使ってないがな
0055nobodyさん2011/11/07(月) 21:30:33.88ID:yd1Vl5Rt
Rails Zombie だっけ? 2が出るとか見かけたんだが。
0056nobodyさん2011/11/07(月) 22:49:12.20ID:???
railsのインストールがうまくいかないまくりなんだけどみんなスムーズに導入できてるの?

gem install railsってすると cannot load such file -- zlibって怒られるし、
じゃあ~/.rvm/src/ruby-1.9.3-p0/ext/zlibまで潜ってruby extconf.rb実行すると
checking for deflateReset() in -lz... no
checking for deflateReset() in -llibz... no
checking for deflateReset() in -lzlib1... no
checking for deflateReset() in -lzlib... no
checking for deflateReset() in -lzdll... no
こんな風に5回連続で怒る。
mkmf.logっていうファイルが更新されているんで、見てみるけど
「‘deflateReset’ が宣言されていません 」とか書いてるだけ。何者よこれ
0057nobodyさん2011/11/07(月) 22:56:00.69ID:???
普通に zlib がねえっていってんじゃん。
パッケージマネージャとか何つかってるのかわからんけど
zlib インストールしろよ。
0058nobodyさん2011/11/08(火) 00:41:35.66ID:???
「さくらのクラウド」料金が発表。「Amazon EC2の半額」は実現できたか? − Publickey
http://www.publickey1.jp/blog/11/amazon_ec2_2.html
0059nobodyさん2011/11/08(火) 01:53:53.54ID:???
SDのinterviewでpresidentが言ってたがawsにalmost all of clientsを持っていかれたそうな
0060nobodyさん2011/11/08(火) 03:53:41.69ID:???
>>57
それぐらい読んでほしいよね。最低限の英語できないと
厳しい
0061nobodyさん2011/11/08(火) 07:07:34.93ID:???
>>57
ああ、zlib.hがないんだろうと思って、$HOME/src/zlib-1.2.5に展開してはいるんだよ。
どうやって読み込ませるんだろうねこれ。

ちなみにパッケージ管理はaptitudeを使ってるんだけど、これにzlibなんてパッケージはなさそうだな。
0062nobodyさん2011/11/08(火) 07:50:49.04ID:???
ちなみにextconf.rbを1行ずつ実行して様子見てみると、
最初の「require 'rbconfig'」でfalseが返ってた。これって標準添付のライブラリじゃないの?
gem install rbconfig実行しようにも、やっぱりzlibがないから使えないし・・・
0063nobodyさん2011/11/08(火) 08:00:43.75ID:???
そんなとこにソースだけ置いても見えるわけないだろ
0064nobodyさん2011/11/08(火) 08:06:00.83ID:???
>>62
apt-get install libzlib-dev
だろ
0065nobodyさん2011/11/08(火) 08:08:40.70ID:???
まちがいました
ubuntuだとlibz-devかzlib1g-dev
0066nobodyさん2011/11/08(火) 08:29:51.14ID:TcZAbBs1
aptitudeなら / (Find) をタイプしてから zlib を指定すればすぐ出てくると思うけど…
0067nobodyさん2011/11/08(火) 10:27:47.89ID:???
なんか全体的に謙虚さがたりない感が見て取れるな。
0068nobodyさん2011/11/08(火) 11:33:36.88ID:???
相手は人間なんだから、言葉づかいだって大事だよな。
0069nobodyさん2011/11/08(火) 12:06:22.51ID:???
ここはLinux入門者スレ?
0070nobodyさん2011/11/08(火) 13:00:36.22ID:???
railsは入れるの結構うざいからなそこら辺も敷居を上げてる。
入れてからもruby知らなきゃ無理だしな。
とりあえず、scaffoldから説明するwebやsiteは糞
0071nobodyさん2011/11/08(火) 13:03:25.25ID:???
パッケージマネージャでのインストールばかりだと新しいrubyがリポジトリになくて詰んだりするね。
0072412011/11/08(火) 13:43:43.59ID:???
みなさんご助言ありがとうございました。
session[:user].name とか書きたかっただけで深い理由はありません。
ユーザー名だけ入れておく事にします。
0073nobodyさん2011/11/08(火) 14:00:40.10ID:???
webやsite w

webの情報なんてほとんど善意のボランティア的なものなんだから、きちんと学びたければ本買えよ。

railsのサイトでrubyの情報も掲載するより、rubyはrubyのサイトに行ってもらった方がやること重複しなくていいだろ。
技術系のエントリ書くの結構大変なんだぞ。

あと scaffoldは基本を抑えるのに必要。最初は生成されたコードを読んどいた方が良い。
実務ではあまり使わないが。
0074nobodyさん2011/11/08(火) 14:03:54.96ID:???
lib ディレクトリの使い方で質問なんですが、
一部のモデルでしか使わないような、Web API の結果をちょこっと入れておくだけのクラスとかなんかも
lib ディレクトリに入れるのが作法なんでしょうか?
0075nobodyさん2011/11/08(火) 14:07:25.90ID:???
実務って言っても14時に2チャンネルってw
ニートの癖にwwww
おれ?
学生ニート
0076nobodyさん2011/11/08(火) 14:10:38.42ID:???
>>73
>rubyはrubyのサイトに行ってもらった方がやること重複しなくていいだろ
日本語から勉強したら?w
0077nobodyさん2011/11/08(火) 14:15:12.98ID:???
ここのスレってwebprog板で一番
根性の曲がり腐った性格の連中ばかりだな

rails使い=こんな奴らばかりなん?
他のfwスレはほのぼのしてて羨ましい。ここは殺伐しすぎ。
0078nobodyさん2011/11/08(火) 14:20:16.53ID:???
道理で当たり前の言葉遣いすらできないわけだ
0079nobodyさん2011/11/08(火) 14:20:57.87ID:???
>>78>>75に対して
0080nobodyさん2011/11/08(火) 14:22:41.26ID:???
IDないと煽るの楽でいいな。
0081nobodyさん2011/11/08(火) 14:37:34.97ID:???
社会人は会社員しかいないと思ってる子供は多いからな。
震災以降リモートの仕事増えたのは良い事だと思う。sshの鍵あればどこでも仕事できるし。

0082nobodyさん2011/11/08(火) 14:42:53.51ID:???
そういう負け惜しみじみた自己紹介はいらない
0083nobodyさん2011/11/08(火) 20:03:42.13ID:???
>>66
ちなみにapt-getの場合はapt-fileってのがあるらしいね。
0084nobodyさん2011/11/08(火) 21:22:37.56ID:???
>>65

ビンゴ!zlib1g-devでできたよー!ありがとー!

最初から手順まとめるとこんな感じ。

bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
source ~/.zshrc
rvm install 1.9.3
sudo aptitude install zlib1g-dev
cd ~./rvm/src/ruby-1.9.3-p0/ext/zlib
ruby extconf.rb
make
make install
gem install rails
sudo aptitude install sqlite3
sudo aptitude install libsqlite3-dev

rvmの手順を端折るともうちょっと易しくなるかも。
でもこれでもwindows環境に比べればだいぶ躓かない方だよな。
native拡張が鬼門だと感じた。
0085nobodyさん2011/11/08(火) 21:42:12.98ID:???
次はexecjsでひっかかるんじゃないのか
0086nobodyさん2011/11/08(火) 22:22:18.44ID:???
いや、execjsはなんとかなったが、opensslがインストールできない。
0087nobodyさん2011/11/08(火) 22:25:58.48ID:???
これだけじゃ不親切だな・・・

rails g scaffold .... とかのコマンドを実行すると、

Could not find a JavaScript runtime.
See https://github.com/sstephenson/execjs
for a list of available runtimes. (ExecJS::RuntimeUnavailable)

って言って怒られる。

これを回避するには、rails new で作ったフォルダ直下にある
「GemFile」フォルダを編集して、
gem 'execjs'
gem 'therubyracer'
っていう行2つを追記、その後
「bundle install」コマンドを実行するとよい。

でもその後scaffoldするとやっぱり「cannot load such file -- openssl 」っていうメッセージで怒られる。
sudo aptitude install libssl-devでも解決しないため、今回は様子が違うのかも。
0088nobodyさん2011/11/08(火) 22:37:31.47ID:???
あ、ごめんなんか自己解決したみたいだわ

sudo aptitude install libssl-dev
cd ~/.rvm/src/ruby-1.9.3-p0/ext/openssl
ruby extconf.rb --with-openssl-include=/usr/include --with-openssl-lib=/usr/lib
make all
make install

これでOK。
zlibの時は

ruby extconf.rb
make
make install

だけだったんで、何らかのオプションが必要だったのがわからんかった。
0089nobodyさん2011/11/08(火) 22:38:48.46ID:???
ちゃんと ext 内の openssl のとこでextconf.rb; make したか?
多分そこクリアすればあとは何事もなく rails s 出来るはず。

あと gem 'execjs' はいらんかったと思うぞ。
自分はいちいち gemfile 編集するのめんどくさかったので node.js をインストールしたわ。
0090nobodyさん2011/11/08(火) 22:48:13.35ID:???
>>89
Gemfile はいじりまくるぞ
rails すら bundle で入れてしまうからな
0091nobodyさん2011/11/08(火) 23:21:40.05ID:fvm2Nfle
最近テストが遅くて困っていて考えたのですが聞いてください
以下のようなspecをテストしたとします
before{ @player = Player.find(1) }
describe "レベルアップをすると、" do
before { @player.levelup! }
it "HPがレベルに応じて上昇している" { @player.max_hp.should==100 }
it "MPがレベルに応じて上昇している" { @player.max_mp.should==30 }
it "攻撃力がレベルに応じて上昇している" { @player.attack.should==30 }
it "防御力がレベルに応じて上昇している" { @player.defense.should==30 }
end
これって展開すると次のように動いてテストがされているのですがはっきりいって
殺意の湧くほど冗長ではないでしょうか?
before{ @player = Player.find(1) }
before{ @player.levelup! }
it "HPがレベルに応じて上昇している" { @player.max_hp.should==100 }
before{ @player = Player.find(1) }
before{ @player.levelup! }
it "MPがレベルに応じて上昇している" { @player.max_mp.should==30 }
before{ @player = Player.find(1) }
before{ @player.levelup! }
it "攻撃力がレベルに応じて上昇している" { @player.attack.should==30 }
before{ @player = Player.find(1) }
before{ @player.levelup! }
it "防御力がレベルに応じて上昇している" { @player.defense.should==30 }
正直、levelup!メソッドは1回だけ呼んでくれるようにRSpecに新しい書式が入れば
実効速度が劇的に上がるのですが
何方か興味あって作業とかする気ありませんか?

0092nobodyさん2011/11/08(火) 23:27:49.44ID:???
>>91
before(:all)
0093nobodyさん2011/11/08(火) 23:43:23.37ID:w7mXyzqt
>>74
自分は、オープンクラス系のファイルの置き場や
プロジェクトの共通関数的なクラス,モジュールの置き場にしてる。

他のRailsプロジェクトのlib配下の使い方を見てみるといいよ
0094912011/11/08(火) 23:43:54.67ID:fvm2Nfle
なん… だ(以下略
0095nobodyさん2011/11/09(水) 02:42:58.80ID:???
>>89
おれもGemfileいちいちいじるのが面倒なんだけど
rails newで自動的にgemfileに書き込んでくれる設定にできないのかな?
■ このスレッドは過去ログ倉庫に格納されています