【Ruby】Ruby on Rails Part10
■ このスレッドは過去ログ倉庫に格納されています
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/
0638nobodyさん
2010/11/08(月) 00:39:42ID:???0639nobodyさん
2010/11/08(月) 00:48:14ID:???WEB+DB PRESS みながらRail3への移行をやってみた。
はまったのはroutes.rb の書き方の変更だった。その記事にはroutes.rbの変更のことは書いてなかったので、
rubyonrails.org の Rails Routing from the Outside In(http://guides.rubyonrails.org/routing.html)を見てみた。
Rails2 の routes.rb で :condition => { :method => :put } のようにHTTPメソッドを指定していたのだが、
それに相当するRails3での記述が分からなかった。
http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/
を見つけた。
:via => :put
と書けばよい、と分かったので自分が特別な存在になったと感じた。
0640nobodyさん
2010/11/08(月) 01:04:25ID:???0641nobodyさん
2010/11/08(月) 01:20:52ID:???Rails2の入門書でやっといてRails3 はrubyonrails.orgの Guideの例をピーコして覚える。
そのうちRails3対応の入門書もでるだろうが、そのころにはRails4の足音が聞こえてくるだろう。
0642nobodyさん
2010/11/08(月) 01:22:48ID:???これから移行する予定なんで、はまったらこのソース参考にしようと思う。
さらにGemfile.lockみるとかなりの量のgemに依存していて、
つまりどのgemが3対応なのかもよくわかる。
0643nobodyさん
2010/11/08(月) 01:36:38ID:dvhdnWylhttp://refinerycms.com/
http://demo.refinerycms.com/日本語書けた
0646nobodyさん
2010/11/08(月) 07:03:41ID:???Rails Guidesに載ってるソースコードを眺めて多少試行錯誤すればいろいろ作れるようになる
0647nobodyさん
2010/11/08(月) 09:05:58ID:???情報の多い旧バージョンで始めて、慣れたら現バージョンに移行すればいい
0648nobodyさん
2010/11/08(月) 19:46:32ID:???でけーじゃねーかww
> 情報の多い旧バージョンで始めて、慣れたら現バージョンに移行すればいい
これには同意
0649nobodyさん
2010/11/08(月) 23:21:24ID:???Rails3の案件キタ━━(゚∀゚)━━ !!
0650nobodyさん
2010/11/09(火) 00:46:18ID:???0651nobodyさん
2010/11/09(火) 01:36:26ID:???ActiveRecordは2と3でずいぶん違うし、3の方が書きやすい。
ActiveModel使ってフォームクラス作ったりできるので、移行しやすい。
Railsが初MVCなら、情報が多い2.3からに同意。
0652nobodyさん
2010/11/09(火) 03:41:04ID:???3の方が速い?
0653nobodyさん
2010/11/09(火) 14:03:29ID:???http://myhost.com
というアドレスをで運用している時に、
プログラム内で、myhost.comの部分を取得する方法を探しています。
0654nobodyさん
2010/11/09(火) 14:41:50ID:???`hostname`
とか
require 'socket'
Socket.gethostname
で取れると思うけど、ホスト名もIPアドレスも1つとは限らないので…
0655nobodyさん
2010/11/09(火) 14:44:18ID:???ただ、普通はその手の情報はそれ専用のカラムを用意するなり定数ファイルに書くべきものだと思う
0656nobodyさん
2010/11/09(火) 15:42:37ID:???request.host を見たりしてる
0657nobodyさん
2010/11/09(火) 15:58:25ID:???proxyだったりすると、Railsアプリが稼働する自ホスト名ではないかもしれん。
0658nobodyさん
2010/11/09(火) 16:14:39ID:???initializers以下にでも置いて読み込ませればいい
0659nobodyさん
2010/11/09(火) 16:26:27ID:???>>653の要望がどう書いてあるかよく読めよ
おれは>>656の「request」を使うに一票
設定ファイル作ってもいいけど、なんでサーバーごと?
サービスごとじゃなくて?
0660nobodyさん
2010/11/09(火) 19:50:38ID:???8章の途中(初版1刷だとp345)にある
map.connect '/incidents/news', :action=>'news', :controller=>'incidents', :format=>'xml'
ってルートがうまく動きません。
以下のように書いてるんですが
map.resources :incidents
map.connect 'incidents/news', :action=>'news', :controller=>'incidents', :format=>'xml'
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
0661nobodyさん
2010/11/09(火) 19:51:37ID:???0662nobodyさん
2010/11/09(火) 23:05:32ID:???map.resources :incidents
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
0663nobodyさん
2010/11/09(火) 23:27:21ID:???>>662 に先を越されてしまったのでくどくどと書いてみる。
ルーティング定義は、上のものから見ていって、最初にマッチした規則が使われる。
rake routes で、チェックする順に出てくる。
map.resouces はいろんな規則をまとめて定義してくれるもので、その中に
/incidents/:id(.:format) ってのが定義されており、/incidents/news は、これに
:id が "news" であると見なしてマッチできてしまう。
元の順序だと、 /incidents/news にアクセスしたとき、ログを見ると
Parameters: {"action"=>"show", "id"=>"news", "controller"=>"incidents"}
と出ているはず。
0664nobodyさん
2010/11/10(水) 00:35:13ID:???Couldn't find Incident with ID=news
はじめにそれでやってみて、
こういうエラーがでたんですが…
0665nobodyさん
2010/11/10(水) 00:37:47ID:???0666nobodyさん
2010/11/10(水) 00:42:45ID:???を
map.connect '/incidents/news', :action=>'news', :controller=>'incidents', :format=>'xml'
にしてみて
0668nobodyさん
2010/11/10(水) 10:25:48ID:???0669nobodyさん
2010/11/10(水) 15:08:52ID:???POST /incidents(.:format) {:controller=>"incidents", :action=>"create"}
new_incident GET /incidents/new(.:format) {:controller=>"incidents", :action=>"new"}
edit_incident GET /incidents/:id/edit(.:format) {:controller=>"incidents", :action=>"edit"}
incident GET /incidents/:id(.:format) {:controller=>"incidents", :action=>"show"}
PUT /incidents/:id(.:format) {:controller=>"incidents", :action=>"update"}
DELETE /incidents/:id(.:format) {:controller=>"incidents", :action=>"destroy"}
/incidents/news {:action=>"news", :controller=>"incidents", :format=>"xml"}
GET /incidents(.:format) {:controller=>"incidents", :action=>"index"}
POST /incidents(.:format) {:controller=>"incidents", :action=>"create"}
GET /incidents/new(.:format) {:controller=>"incidents", :action=>"new"}
GET /incidents/:id/edit(.:format) {:controller=>"incidents", :action=>"edit"}
GET /incidents/:id(.:format) {:controller=>"incidents", :action=>"show"}
PUT /incidents/:id(.:format) {:controller=>"incidents", :action=>"update"}
DELETE /incidents/:id(.:format) {:controller=>"incidents", :action=>"destroy"}
/:controller/:action/:id
/:controller/:action/:id(.:format)
0670nobodyさん
2010/11/10(水) 15:12:03ID:???map.resources :incidentsがあっただけのようです
0671nobodyさん
2010/11/10(水) 17:57:38ID:???javascriptで使ってるんですが、
そのとき得た座標のデータとかをrailsのデータベースに
登録するにはどうしたらいいでしょうか?
0672nobodyさん
2010/11/10(水) 18:34:17ID:???0673nobodyさん
2010/11/10(水) 20:24:39ID:???0674nobodyさん
2010/11/10(水) 21:56:26ID:bZyDCE88開発中に起こった問題で
ユニットテスト時にRailsの./log/development.logに、次の様な書き込みが大量にされます
[DEBUG] 2010/11/10 21:46:57 SQL (0.1ms) INSERT INTO `schema_migrations` (version) VALUES ('20101105154000')
./log/test.log にもユニットテスト時に書き込みはされるのですが
./log/development.log下にも謎の書き込みがあると他の人が開発中にエラーログを追えなくなってしまします
何方か似たような症状を体験された方などはいらっしゃらないでしょうか?
OSはFedora13でrails 2.3.5 Apache+passenger+mysql環境です。
0675nobodyさん
2010/11/10(水) 23:07:37ID:???0676nobodyさん
2010/11/10(水) 23:09:30ID:???0677nobodyさん
2010/11/11(木) 00:26:41ID:???ttp://www.doko.jp/api/documents/searchPOI.html
ってのがあります。
XMLリクエストサンプルから、
データを取得したいんですが、
いまいちajaxの使い方がわかりません…。
というかrailsからajaxを使おうとすると変なヘルパだのなんだのが出てきて、
そういうの無しでやりたいんですが、どんな感じになるでしょうか?
0678nobodyさん
2010/11/11(木) 00:48:53ID:???0679nobodyさん
2010/11/11(木) 01:05:20ID:???0680nobodyさん
2010/11/11(木) 01:12:25ID:???0681nobodyさん
2010/11/11(木) 09:46:39ID:???何をやりたいかわからんが順番を追ってやろうぜ
・Rails抜きで、jQueryあたりででデータ取得して表示するだけのJavaScriptを書いてみる
・Railsのviewに組み込んで表示
RailsからDBに保存したいなら、
・何でもいいからAjaxで保存する仕組みを作る
・上のと組み合わせて保存
・以下お好きなように
Railsでデータを取得するだけなら、そもそもAjaxが必要ないけど
0682nobodyさん
2010/11/11(木) 12:03:10ID:???緯度経度の情報が、:latと:lngで与えられてて、
ttp://www.doko.jp/api/documents/searchPOI.htmlのAPIで、
http://api.doko.jp/v1/searchPOI.do?key=*****&format=xml&pagenum=1&pagesize=3&
keyword=コンビニ&lat_jgd=指定された緯度&lon_jgd=指定された経度&order=2
というように取ってきたxmlのデータをrailsで登録したいのですが、
これはAjax必要ですか?
0683nobodyさん
2010/11/11(木) 12:31:43ID:???link_remoteなどを使うと、画面を部分ごとに更新できて便利なのですが、
その更新内容の中にjavascriptを書き、
更新されたタイミングでそれを動かす、ということは可能なのでしょうか?
たとえば、link_remoteヘルパで生成したリンクをクリックした瞬間、
画面の一部分が書き換わると同時に、window.alert("hello");
で、ポップアップを表示できるか?ということです。
可能であれば、その方法を教えて頂きたいと思います。
何卒、よろしくお願い致します。
0684nobodyさん
2010/11/11(木) 12:57:18ID:h//cJorg出来る。てか、そのくらいならすぐ試せばいいじゃないかw
0685nobodyさん
2010/11/11(木) 16:08:57ID:???そもそも何をしたいのかもう少し詳しく。
APIにアクセスしてrailsでActiveRecordでデータをDBに入れるだけなら、
Ajax使う必要すらないと思う
APIのURLから取得してくるライブラリのhttpartyをgemで入れるとか
https://github.com/jnunemaker/httparty
別にopen-uriをrequireしてそのURLをopenしてreadして取得するなり、
もちろんnet/httpなりでもいいけど
0687nobodyさん
2010/11/11(木) 19:26:30ID:???ついでにそれを自サーバに送り付けたいって話?
0688nobodyさん
2010/11/11(木) 19:37:16ID:???keyword=コンビニ&lat_jgd=指定された緯度&lon_jgd=指定された経度&order=2
このURLでブラウザからアクセスしたときにもらえるXMLを、
railsのデータベースに登録したいです。
0690nobodyさん
2010/11/11(木) 22:17:24ID:???0691nobodyさん
2010/11/11(木) 23:32:20ID:???RailsやRubyプログラマけっこういるし
Help me, hackers!
http://help-me-hackers.com/
> railsのデータベースに登録したいです。
どちらにせよ、これもう少し具体的にしないと適当な答え返ってくるだろうけど・・・
0692nobodyさん
2010/11/11(木) 23:32:52ID:???0693nobodyさん
2010/11/11(木) 23:38:43ID:???第38回 RubyでWeb API - bi_naの日記
http://d.hatena.ne.jp/bi_na/20100909/1284037651
取得まではこれでいけるだろ
0694nobodyさん
2010/11/12(金) 00:01:17ID:???book.author_idを設定するにはセレクトボックス以外使えないんでしょうか?
authorテーブルが500行あるのでめんどいのです。
0695nobodyさん
2010/11/12(金) 00:14:29ID:???ajaxで検索させて、選択したら値設定とか、いろいろやり方はある
0696nobodyさん
2010/11/12(金) 00:16:15ID:???0697nobodyさん
2010/11/12(金) 00:25:47ID:???0698nobodyさん
2010/11/12(金) 00:26:47ID:???0699nobodyさん
2010/11/12(金) 01:02:27ID:???2.xで外部プラグインとして独立してた気がする。
0700694
2010/11/12(金) 08:38:20ID:???ラジオボタンとかどうでしょうか?
0701nobodyさん
2010/11/12(金) 09:02:25ID:???0702nobodyさん
2010/11/12(金) 11:46:02ID:???0703nobodyさん
2010/11/12(金) 13:56:31ID:???http://hibari.2ch.net/test/read.cgi/php/1147830986/
【PHP】Lvうpしたいので宿題ください
http://hibari.2ch.net/test/read.cgi/tech/1200175247/
Rubyの宿題教えてください。2限目
http://hibari.2ch.net/test/read.cgi/tech/1276873238/
いろんな言語で宿題 第五編
0704nobodyさん
2010/11/12(金) 15:11:44ID:???0705nobodyさん
2010/11/12(金) 16:03:37ID:???これだけがネックで移行できんー
0706nobodyさん
2010/11/12(金) 17:06:32ID:???http://www.rochefort8.com/toolbox_search/categories/15223
を見て
http://www.railsplugins.org/plugins
で検索
0707nobodyさん
2010/11/12(金) 17:43:30ID:???鯖側はうpされたデータを全部メモリに読み込んでから鯖上のファイルに書き込むみたいで
鯖のメモリをめちゃくちゃ食って遅くなるんだけど
全部メモリに読むんじゃなくて送信されてきたデータを
分割されたパケット毎に受け取るタイミングで逐次ファイルに出力できませんか
0708nobodyさん
2010/11/12(金) 19:25:36ID:???0710nobodyさん
2010/11/12(金) 20:19:10ID:???0711nobodyさん
2010/11/13(土) 06:57:42ID:???The Rails Way: File Downloads Done Right
http://www.therailsway.com/2009/2/22/file-downloads-done-right
apacheならmod_xsendfile使って:x_sendfileを指定、nginxならX-AccelRedirect.でいけるんじゃね?
0712nobodyさん
2010/11/13(土) 10:39:38ID:???0713nobodyさん
2010/11/13(土) 13:30:38ID:???>>711
x_sendfileはサーバーからクライアント江(ダウンロード)で
707が知りたいのはクライアントからサーバへアップロードする場合のことなんでは?
ぶっちゃけ俺も707と同じこと知りたいんだけどね。
0714nobodyさん
2010/11/13(土) 14:05:47ID:???0715nobodyさん
2010/11/13(土) 14:14:42ID:???作るしかない予感。
0716nobodyさん
2010/11/13(土) 14:37:51ID:???0717nobodyさん
2010/11/13(土) 15:49:08ID:???アプリ側に来る前にファイル化が済んでなきゃいけないんだから、
原理的に難しそうだね。
アップロードについてはそれ専用のアプリを別途用意して、
あらかじめアップロード済みのものを参照するみたいな形にするしかないんじゃないかな。
gmailのファイル添付とかも結局そういう仕組みなんでしょ?
0718nobodyさん
2010/11/13(土) 16:24:45ID:???0719nobodyさん
2010/11/13(土) 17:09:32ID:???ファイルアップロードはWebrickやPassengerや何やらかにやらがテンポラリファイルとして保存して
然る後Railsに渡されるようで、
707の
>全部メモリに読むんじゃなくて送信されてきたデータを
>分割されたパケット毎に受け取るタイミングで逐次ファイルに出力できませんか
というのがRailsアプリ側で出来るかという意味なら出来なくて、
一旦全部オンメモリに蓄えるのを何とかしたいだけなら例えばPassengerを使うという方法がある。
いずれにせよ、テンポラリファイルとして保存されるので、どこかにコピーしなければならず(と思う)、
下記のような処理をRailsアプリに入れる必要がある。
File.open(path, "wb") { |f| f.write(upload['datafile'].read) }
大きいファイル(オーバーギガバイト)だと結構時間がかかる。
ファイルのmoveで済ませられればいいのだけど、それが可能なのかどうか分からない。
教えてエロイ人。
0720nobodyさん
2010/11/13(土) 18:00:38ID:???carrierwaveとか使えば万事うまくやってくれそうな気はするんだけど
0721nobodyさん
2010/11/13(土) 18:20:35ID:???0722nobodyさん
2010/11/13(土) 21:16:04ID:???File.open(path, "wb") { |f| f.write(upload['datafile'].read) }
を
File.rename upload['datafile']..path, filepath)
にしてみた。
Windowsの開発環境ではエラーになった。
Errno::EACCES in XXXX
Permission denied -
Linuxの本番環境では動いてるけど、変更前と比べて早くなってないような気がする。
0723nobodyさん
2010/11/14(日) 06:16:41ID:xVD3d5kdBlogKit is a rails plugin to add a blog to your app.
https://github.com/ryanstout/blog_kit
0724nobodyさん
2010/11/14(日) 06:22:47ID:xVD3d5kdhttp://www.activemerchant.org/
https://github.com/evilmartians/active_merchant
Potion Store is an open source Ruby on Rails application that powers the Potion Factory Store.
The goal is to help new Mac OS X developers get up and running fast without having to sign up with services such as Kagi or Esellerate.
The only thing you need to bring is
your own license key generator and a PayPal or Google Checkout merchant account.
http://www.potionfactory.com/potionstore
0725nobodyさん
2010/11/14(日) 07:01:44ID:xVD3d5kdGeokit plugin for Rails/ActiveRecord. Provides location-based goodness for your Rails app. Requires the Geokit gem.
Origin as a two-element array of latititude/longitude:
find(:all, :origin => [37.792,-122.393])
https://github.com/andre/geokit-rails
0726nobodyさん
2010/11/14(日) 13:01:52ID:???助けてくださいませんでしょうか・・・
【環境】
OS: WindowsXP Home Edition
eclipse: pleiades-e3.6-java-jre_20101025
InstantRails: 2.0(Rubyのバージョンは1.8.6)
Railsプロジェクトを作成すると、
’Replace prject index file’に問題が発生しました。
リソース'/(プロジェクト名)/public'が存在しません
というエラーダイアログが表示されます。
エラーダイアログを閉じ、ジェネレーターでscaffoldを生成しようとしても、
うんともすんとも言いません・・・。
eclipseログには
!MESSAGE 内部エラー
!STACK 1
org.eclipse.core.runtime.CoreException: Local configuration cannot be nested in a directory.
at org.eclipse.debug.internal.core.LaunchConfigurationType.newInstance(LaunchConfigurationType.java:463)
at com.aptana.rdt.internal.core.gems.GemManager.createGemLaunchConfiguration(GemManager.java:374)
at com.aptana.rdt.internal.core.gems.GemManager.launchInBackgroundAndRead(GemManager.java:258)
at com.aptana.rdt.internal.core.gems.GemManager.loadSourceURLs(GemManager.java:850)
at com.aptana.rdt.internal.core.gems.GemManager$2.run(GemManager.java:834)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
!SUBENTRY 1 org.eclipse.debug.core 4 0 2010-11-14 12:17:18.812
!MESSAGE Local configuration cannot be nested in a directory.
が出力されています。
RadRails単体でRailsプロジェクトを作成しても同じエラーが発生していまいました。
0727722
2010/11/14(日) 13:23:19ID:???File.link(upload['datafile'].path, path)
rescue SystemCallError
File.open(path, "wb") { |f| f.write(upload['datafile'].read) }
end
こうやってみた。linkはWindowsでも使えるらしい。
link失敗時に SystemCallError を rescueすればいいのかどうかちょっと不安。
誰か教えてプリーズ
0729nobodyさん
2010/11/14(日) 15:12:30ID:???RoRのバージョンは2.0.2でした。
InstantRails2.0のに含まれているRubyのバージョンが1.8.6で、
そのまま、アップデートしていなからです・・・
>>728さんのレスを見てバージョンを最新にしなくてはならないのかと重い、
gemからアップデートしようとしたのですが、
gem自体のアップデートは出来たのですがRubyのアップデートがうまくいきません。
gem update rubyとたたくと
Building native extensions. This could take a while...
ERROR: Error installing fxruby:
ERROR: Failed to build gem native extension.
C:/ror/InstantRails-2.0-win/ruby/bin/ruby.exe extconf.rb
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
とアップデートできません・・・
rubyのアップデートはどのように行えばよいのでしょうか?
rubyのアップデートができないとRoRのアップデートも出来ないです・・・。
0730nobodyさん
2010/11/14(日) 15:54:34ID:???0731nobodyさん
2010/11/14(日) 16:01:45ID:???rubyinstallerの最新版を使ってruby1.8.7か1.9.2を入れる。
そのあとDOSプロンプトで「gem install rails」で終わり。
railsのバージョンを指定したい場合は「gem install rails -v=x.x.x」
そして古い本は捨てて、せめて2.3.x対応のRails本を買う。
サイトのみで勉強するのなら、サイトの更新日に気をつけて古い情報は無視する。
ちなみにバージョンを指定しないとrails3系がインストールされる。
0732nobodyさん
2010/11/14(日) 16:26:15ID:???ありがとうございます。
自分もInstantRailsは2007年で更新が終わっているようなので、
古いモノなのではと思い、rubyinstallerで1.9.2をインストールしたところです。
gemも標準で入っているようですし、今度こそ環境くらい完成させます。
サイトのみで勉強していましたが情報が少ないのか、調べ方が悪いのか、理解力がないのか、
環境構築に丸2日悩んでしまいました。
初歩的な質問に対応して下さり、ありがとうございました。
0733nobodyさん
2010/11/14(日) 19:09:22ID:???windowsは環境構築に苦労するよ
お薦めはNetbeansを入れてNetbeans内のRuby(性格にはJRuby)を使う
そうすればWindowsに自分でrubyやらgemやら入れなくていい
Railsなどのインストールも全部netbeans上でできる
コマンドすら打つ必要がない
0734nobodyさん
2010/11/14(日) 19:37:31ID:???0735nobodyさん
2010/11/14(日) 21:27:51ID:???Netbeans には同意するけどJRubyはどうかな。
http://rubyinstaller.org/downloads/ から
Ruby 1.8.7
DevKit-4.5.0
をダウンロードしてインストールする。
DevKit-4.5.0 はドキュメントをよく読んでね。
コンソールからrubyを実行する必要があるのでrubyのインストールをやっておくこと。
NetbeansはRails環境入り(全部入りでも可)をインストールする。
sqlite3 も使うであろうから sqlite3.dll と sqlite3.exe をダウンロードしてどこかのフォルダにおいてPATHを通しておく。
俺は Win7 x64でSubversionも使いたかったので Slik SVN もインストールした。
0736nobodyさん
2010/11/14(日) 21:30:10ID:???0737nobodyさん
2010/11/14(日) 21:40:12ID:???0738nobodyさん
2010/11/14(日) 22:15:51ID:???■ このスレッドは過去ログ倉庫に格納されています