【RoR】Ruby on Rails Part11
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/12/11(土) 10:58:56ID:???【Ruby】Ruby on Rails Part10
http://hibari.2ch.net/test/read.cgi/php/1282991262/
■参考サイト
<英語>
本家:http://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/
0147nobodyさん
2011/01/09(日) 11:02:47ID:hPSqOLvQ0148nobodyさん
2011/01/09(日) 11:04:24ID:???さすがrails様は次元が違いますね^^
0149nobodyさん
2011/01/09(日) 12:04:15ID:???0150nobodyさん
2011/01/09(日) 13:09:00ID:???ただの末端ユーザーにとってはVBと違いはほとんど無い
0151nobodyさん
2011/01/09(日) 13:28:56ID:???試行錯誤を繰り返すタイプの「生粋のエンジニア」なのか「似非Webエンジニア」なのかという差ということですね。
「PHPだけできます」という人間は吐いて捨てるほどいるけど、rails使いのように、appサーバの負荷や
フレームワークの負荷に敏感な「生粋のエンジニア」は少ないということですね」
これらの差は、非エンジニア職である経営層は一生気づくことのない差なんでしょうね。
その差に気づくことが出来ない経営者が仕切っている会社は
一生、web業界において、勝ち組になることは出来ないでしょう。
0152nobodyさん
2011/01/09(日) 16:17:49ID:???0154nobodyさん
2011/01/09(日) 20:35:35ID:???Rails厨が何を言っても憐れに見える。
Cakeの誕生でわざわざRailsの開発環境整える意味も皆無になったわけで
さっさと諦めればいいのに。
0156nobodyさん
2011/01/09(日) 22:35:08ID:???0157nobodyさん
2011/01/10(月) 01:10:46ID:???0158nobodyさん
2011/01/10(月) 04:09:07ID:SqSUf4Y5Mac OS X 10.6.6
Ruby 1.8.7
rails 2.3.8
MySQL5.5.8
でRuby on Railsを使いたいのですが
rake db:migrateとすると以下のエラーが出ます。
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
dlopen(/Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle, 9): Library not loaded: libmysqlclient.16.dylib
Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
Reason: image not found - /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
(See full trace by running task with --trace)
gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
を行いgem listで調べるとmysql (2.8.1)が入っています。
いろいろ調べたのですがわからないので誰か教えてください。
よろしくお願いいたします。
0159nobodyさん
2011/01/10(月) 09:19:57ID:KNJg+u2Yhttp://hibari.2ch.net/test/read.cgi/hosting/1259841636/l50
http://hibari.2ch.net/test/read.cgi/hosting/1291993724/l50
http://daybook.biz/category/server/dedicatedserver/
http://www.webhostingtalk.com/forumdisplay.php?f=36
0160nobodyさん
2011/01/10(月) 09:30:12ID:Us1Ofr5Vexport DYLD_FALLBACK_LIBRARY_PATH
とやったらどうなる?
0161158
2011/01/10(月) 22:27:20ID:SqSUf4Y5返信遅くなってすみません。
なにも出ません。
そしてrake db:migrateの結果も変わりません><
0162nobodyさん
2011/01/10(月) 23:19:28ID:???一回gem uninstall mysqlしてからやり直してみては?
0163nobodyさん
2011/01/10(月) 23:31:26ID:???じゃなかったっけ?
0164158
2011/01/11(火) 00:25:44ID:w92gJgj0gem install mysql2 は駄目でした
>162
これから64bitいれ直してみます!
0165158
2011/01/11(火) 00:33:28ID:w92gJgj0で入れたのですがだめでした。。。
もうかれこれ4日くらい同じところでつまずいています。泣
0166nobodyさん
2011/01/11(火) 00:47:17ID:???0167158
2011/01/11(火) 00:57:51ID:w92gJgj012月にmacを買いまして最初から10.6.6です。
それでmysqlを入れました。
0168nobodyさん
2011/01/11(火) 07:49:17ID:???0169nobodyさん
2011/01/11(火) 11:12:56ID:???class CreateRelationCategories < ActiveRecord::Migration
def self.up
create_table :relation_categories do |t|
t.references :post
t.references :category
t.integer :main
t.timestamps
end
add_index :relation_categories, :post
add_index :relation_categories, :category
end
def self.down
drop_table :relation_categories
end
end
0171nobodyさん
2011/01/11(火) 12:07:49ID:KMpfNobVどんなエラーよ
0172nobodyさん
2011/01/11(火) 13:34:18ID:???referencesのとこはpostでも
0173nobodyさん
2011/01/11(火) 18:35:17ID:???0174nobodyさん
2011/01/11(火) 23:21:57ID:???GETパラメータでsjisの文字列を渡すと
params[:key].blank?
でArgument Error となってしまいます。
params[:key].encode("utf-8").blank?
params[:key].force_encofing(“utf-8“).blank?
は試したのですが結果は変わりません。
どうすればよいのでしょう?
0175nobodyさん
2011/01/11(火) 23:32:17ID:???0176nobodyさん
2011/01/11(火) 23:47:34ID:EbNzEbCqできればエラーを引き起こしたArgumentの値も欲しいが。
0177174
2011/01/11(火) 23:52:59ID:???すみません
エラーメッセージは以下です。
invalid byte sequence in UTF-8
activesupport (3.0.3) lib/active_support/core_ext/object/blank.rb:68:in `=~'
rails new test
でアプリ作成後、
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
def index
warn params[:key].force_encoding("UTF-8").blank?
end
end
root.rb
root :to=>"application#index"
を記述し、
http://127.0.0.1:3000/?key=%83e%83X%83g
で再現します。
0178nobodyさん
2011/01/12(水) 01:01:58ID:???または表もutf-8にする
0179nobodyさん
2011/01/12(水) 08:55:08ID:PVfPMtkv間違いなくUTF-8が入っているけどアプリにはそれがわからない
という場合に使う。
とりあえずparams[:key] と params[:key].encoding を出力してみれば?
0180nobodyさん
2011/01/12(水) 10:58:19ID:Jb3zJbvVparamsを組み立てる途中で強制的にUTF-8エンコーディング情報を
付けてしまう(ActionDispatch::Http::Parameters)。
とりあえずは
key = params[:key].encode('UTF-8', 'Shift_JIS')
みたいにエンコードし直すのが手っ取り早い。
0181nobodyさん
2011/01/12(水) 15:26:13ID:???initializers配下で overrideの定義を書いたファイルをrequireするやり方だと、上手くいきません。
(initializers配下のファイルが読み込まれたあと、pluginのファイルが読み込まれるため?)
0182nobodyさん
2011/01/12(水) 16:21:53ID:???0183158
2011/01/12(水) 17:18:42ID:gnHL4Y+Whttp://www-jp.mysql.com/downloads/mysql/のサイトから
MySQL Community Server 5.5.8のMac OS X ver. 10.6 (x86, 64-bit), DMG Archiveをダウンロードしました。
>170
portで入れた方がいいんですか。
アドバイスありがとうございます。
0184nobodyさん
2011/01/12(水) 17:29:17ID:???あとはrubyのバージョンとrubyをどうやって入れたか。
同じような環境(mysqlはバイナリインストール、rubyはソースからインストール)だけど、全く問題出てないので。
0185158
2011/01/12(水) 18:35:35ID:gnHL4Y+Wruby1はmacにもともと入ってやつでバージョンは1.8.7です。
0186nobodyさん
2011/01/12(水) 18:54:35ID:Jb3zJbvVそうでないMysqlのライブラリって一緒に使えるのかな。
0187158
2011/01/12(水) 18:57:44ID:gnHL4Y+W一から入れ直してみようと思います。
みなさまいろいろ親切にありがとうございました!
0188nobodyさん
2011/01/12(水) 22:10:57ID:???返答ありがとうございます。
しかし、after_initializeの中でrequireしてもダメのようです。
困った。。。
ttp://stackoverflow.com/questions/4412018/rails-devise-how-to-render-login-page-without-a-layout
ここにあるAnswerの subclass を作るやり方のようにやりたいのですが。。。
0189nobodyさん
2011/01/12(水) 22:53:11ID:PVfPMtkvファイルをrequireしてしまってもダメ?
0191nobodyさん
2011/01/13(木) 12:58:25ID:???回答ありがとうございました。
結局一日調べて
actionpack-3.0.3/lib/action_dispatch/http/parameters.rb
74行目付近に
when String
value=NKF.nkf("-w",value)
value=value.force_encoding(Encoding::UTF_8) if
value.respond_to?(:force_encoding)
を追加したものを用意することで対応できました。
0192nobodyさん
2011/01/14(金) 13:18:07ID:BgLvsnpsscaffoldを使ってモデルを作成した際、new.html.erbのform_forのtext_fieldに日本語を入力すると
incompatible character encodings: UTF-8 and ASCII-8BIT
というエラーが出ていました。
これはshow.html.erb、index.html.erbで.force_encoding 'UTF-8'としてエンコーディングすることで解決しました。
しかしながらフォームから値を入力する際に日本語を入力すると表示はできるのですが編集しようとした際にエラーが出ます。
Encoding::CompatibilityError in Events#edit
Showing app/views/events/edit.html.erb where line #13 raised:
incompatible character encodings: UTF-8 and ASCII-8BIT
Extracted source (around line #13):
10: <p>
11: <%= f.label :イベント名 %><br />
12: <%= f.text_area :event %>
13: </p>
14: <p>
15: <%= f.label :イベントの種類 %><br />
16: <%= f.text_field :subject %>
このような場合、どのような処理を行えばこのエラーは取れますか?
0193nobodyさん
2011/01/14(金) 13:55:11ID:???きりないから、可能ならRails3.0.3にするかRuby1.8.7に変更した方がいいよ
0194nobodyさん
2011/01/14(金) 14:03:41ID:???あと、htmlの指定でもutf8になってるんだろうか。
sjisが入力されてるような気がする
0195nobodyさん
2011/01/14(金) 14:13:12ID:BgLvsnpsなるほど…。
やっぱりそこを変えたほうがいいのですね。
>>194
両方utf8になっていると思われます。
0196nobodyさん
2011/01/14(金) 22:23:10ID:???Post.joins(:tags).where(['tags.name like ?', params[:q]]).group('post.id')
0197nobodyさん
2011/01/14(金) 22:25:58ID:???0198nobodyさん
2011/01/15(土) 00:23:08ID:???0199nobodyさん
2011/01/15(土) 08:49:55ID:???post = Post.new(:title => 'あい')
post.tags.build(:name => '純愛')
post.tags.build(:name => '恋愛')
post.save
Post.joins(:tags).where(['tags.name like ?', '%愛%']) #=> 「あい」が2つ出る
0200192
2011/01/17(月) 00:57:31ID:eCmWyBLtRails3.0.3にするかRuby1.8.7に変更した方がいいとアドバイスをもらったものです。
Railsを1.9.2でという約束なのでRailsのバージョンを変えました。
現在の環境はOSはWindows7で
ruby 1.9.2p0 (2010-08-18) [i386-mingw32],rails 3.0.3です。
form_forを使ってDBに値を格納し、index.html.erbやshow.html.erbで表示をすると
値がおかしいです。と、いいますのも、MySQLでselect文を使って表示してみると
きちんと、time型はtime型で、text型はtextで格納されているのですが
controllerで@event = Event.find(params[:id])とし、showやindexで <%=h @event.e_start %>
(e_startはtime型です)とするとfloat型の数値が表示され、text型のe_commmentを表示しようとすると
int型の0が表示されます。
原因がわからず困ってます。誰か知恵をください。お願いします。
0201nobodyさん
2011/01/17(月) 01:10:44ID:???デフォルトでエスケープされる
mysqlのライブラリがおかしいとかじゃないのか?
ちゃんとmysql2使ってる?
0202192
2011/01/17(月) 03:47:43ID:eCmWyBLt<%=h の「h」いらないんですね!自分何も知らなさすぎるorz
mysql2使ってます!
0203nobodyさん
2011/01/17(月) 23:38:18ID:???ここにいる人のほとんどが使ってないだろうから
というわけで俺も力になれません
0204nobodyさん
2011/01/17(月) 23:48:34ID:???mysql2はdevkitが必要だと思うが入れたのか?
前にも書いたし勝手に解決してないことにするなよ。
0205nobodyさん
2011/01/18(火) 19:11:55ID:???データに関してはRDBに丸投げですか?
0206nobodyさん
2011/01/20(木) 01:29:44ID:???0207nobodyさん
2011/01/20(木) 02:19:35ID:???0208nobodyさん
2011/01/20(木) 17:05:05ID:???→ Tomcat+javaにしてみた → これが正解だと思った
0209nobodyさん
2011/01/20(木) 17:16:00ID:SSKhJITEhttp://www.amazon.co.jp/gp/product/4873113202
0210nobodyさん
2011/01/20(木) 17:16:13ID:???これに相当するのはRailsで言えばPassenger。
多少でも分かっていれば、こんなバカな間違いはしない。
またいつも荒らしてる勉強会の出席者?
0211nobodyさん
2011/01/20(木) 17:30:50ID:???0212nobodyさん
2011/01/20(木) 17:57:49ID:???0213nobodyさん
2011/01/21(金) 04:07:57ID:???0214nobodyさん
2011/01/21(金) 07:36:26ID:???0215nobodyさん
2011/01/21(金) 08:33:12ID:???0216nobodyさん
2011/01/21(金) 12:46:05ID:???0217nobodyさん
2011/01/22(土) 03:04:07ID:a6Nv7f5X0218nobodyさん
2011/01/23(日) 12:04:05ID:???低脳ばかりだからしょうがないよ^^
たとえばMySQLならexplainで実行計画を確認するのは
初心者が一番初めに覚えるべき基本だろ。
基本をはずしたヤツが開発したWebアプリはサイトがヒットした瞬間、
「トップページも表示されません」「今日は売り上げがゼロでした」という
間抜けなことになる(笑
こんなこと言っても、ここの連中には馬の耳に念仏だろうけどね(笑
まぁ 生まれつき低脳だから仕方ない^^
なんていうか、向上心が無い。知識が狭くて浅いが、本人には自覚が無いのでたちが悪い。
0219nobodyさん
2011/01/23(日) 12:54:43ID:???ママに怒られたか
0220nobodyさん
2011/01/23(日) 20:39:24ID:???考えるのは当たり前のこと
Rails で間抜けな SQL を発行している人間は Java を使っても間抜けなコーディングになるだけ
0221nobodyさん
2011/01/23(日) 21:03:33ID:???0222nobodyさん
2011/01/24(月) 00:32:29ID:???t.text :data
end
class Hoge < ActiveRecord::Base
def hoge
puts "*A* data = #{data.inspect}"
data = "fuga" if false
puts "*B* data = #{data.inspect}"
end
end
Hoge.create!(:data => "hoge")
で Hoge.first.hoge すると
*A* data = "hoge"
*B* data = nil
となるのは、なぜ? 両方 "hoge" になるべきだと思うんだけど。
Rails 3.0.3 + Ruby 1.9.0p0 でも Rails 2.3.5 + Ruby 1.8.7 でも同様。
0223nobodyさん
2011/01/24(月) 00:57:19ID:???Rails関係ないから初心者スレに行くといい
0224nobodyさん
2011/01/24(月) 04:21:21ID:???0225nobodyさん
2011/01/24(月) 08:21:35ID:???0226nobodyさん
2011/01/24(月) 16:22:48ID:???require 'active_support/all'
module M
def self.included(base)
base.class_eval do
class_inheritable_accessor :a
self.a = 1
end
end
end
p Class.new.send(:include, M).new.a # => 1
p Class.new{include M}.new.a # => nil ← !?
0227nobodyさん
2011/01/24(月) 16:58:51ID:???初 心 者 ス レ に い け
0228nobodyさん
2011/01/24(月) 17:10:48ID:???0230nobodyさん
2011/01/25(火) 15:35:25ID:???session_id から session を復元する方法はありませんか?
(Rails3+Dalli です)
ActiveRecordベースの場合、以下のようにして復元できたのですが。。。
session = ActiveRecord::SessionStore::Session.find_by_session_id(session_id)
0231nobodyさん
2011/01/25(火) 17:12:30ID:yu47GaxVうちはまだ Dali でも Rails3 でもないけど、cache をストアに使っている
MemCache クラスのインスタンスだとすれば、cache["session:#{session_id}"]
で取れてる。
memcache上のキー自体は #{namespace}:session:#{session_id} になっている。
0232230
2011/01/25(火) 20:00:15ID:???返答ありがとうございます。
以下のやり方でいけました。
session = Dalli::Client.new('localhost:11211').get("rack:session:#{session_id]}")
デシリアライズまで透過的にやってくれるのはありがたいのですが、
memcacheのクライアントをリクエストのたびに毎回生成してしまうやり方なので、
負荷的によろしくなさそうなのが何とも。何か良い方法はないものかな。
Rails.cache.fetch(session_id) とかで取れれば、楽なんですがねぇ。
0233nobodyさん
2011/01/25(火) 20:44:25ID:F3Uu324/入ってなかった?
0234230
2011/01/25(火) 22:13:27ID:???CACHE = MemCache.new memcache_options
CACHE.servers = 'localhost:11211'
ActionController::Base.session_options[:expires] = 1800
ActionController::Base.session_options[:cache] = CACHE
という感じで、memcacheクライアントの実態が入っていたようです。
3.xからは、ActionController::Base.session_options が request.session_optionsに移動して
:cache もなくなってしまった感じっぽいです(Rails.cache?)。
0235nobodyさん
2011/01/27(木) 02:20:28ID:8vsS5446【ネット/料理】「年内にクックパッド抜く」 楽天レシピ、急成長
http://toki.2ch.net/test/read.cgi/wildplus/1296032687/
0236akiyan
2011/01/28(金) 23:35:53ID:???0237nobodyさん
2011/01/29(土) 02:50:04ID:ioBbPtI8http://invizi.net/subject:58
[クックパッド][cookpad][ruby][rails][楽天]
0238nobodyさん
2011/01/29(土) 02:51:19ID:ioBbPtI8http://invizi.net/subject:60
0239nobodyさん
2011/01/29(土) 13:25:51ID:???Book.transaction do
処理1
処理2
end
このようなコードを書いた場合、
処理1と処理2がいずれも実行されるか、いずれも実行されないか
を保障するというのは理解できるのですが、
処理1と処理2の間に別プロセスがBookテーブルに変更を加えてしまうことはあり得ますか?
具体的には、Bookテーブルにcountというカラムがありまして
この本を保持する人の人数を保持しています。
ユーザーからのあるアクションによって、複数のbookのcountを更新する必要があるのですが、
Aさんが更新中にBさんが更新してしまうと整合性が取れなくなってしまう問題に当たっています。
この更新処理を上のコードのトランザクションで囲めば解決されるのでしょうか?
0240nobodyさん
2011/01/29(土) 13:35:21ID:???rails3+jpmobile環境なのですが、jpmobileのconfig.jpmobile.mobile_filter をオンにした状態化で
swfファイルを send_file or send_data すると jpmobile のフィルタの影響で不正な swf ファイルが送信されてしまいます
なんとか、mobile_filter をオンにしつつ、正常な swf ファイルを送信する方法はないでしょうか?
0241nobodyさん
2011/01/29(土) 14:10:00ID:???ttp://dev.mysql.com/doc/refman/5.1/ja/innodb-transaction-isolation.html
InnoDB使ってるだろうから、デフォルトの REPEATABLE READ だと思われる。
結論からいうと、Bookテーブルは別のプロセスから変更を受けうる。
ただし、Bookテーブル内のロックされた行は
別プロセスから変更を受けないことが保証される。
テーブルレベルのロックと行レベルのロックの違いを汁。
Aさんが行1,2を更新している間は、Bさんは行1,2のコミットが終わるまでは、
UPDATEやDELETEはもちろん、SELECT文での読み取りも不可能になる。
ただし、Aさんがそのトランザクション中に更新しないとMySQLが判断した
行3なんかがあたとしたら、Bさんは行3に関しては読み取り・更新が出来る。
書き方が変だと、トランザクションはったつもりでも
レースコンディションが起こるので注意。
ttp://d.hatena.ne.jp/LukeSilvia/20100130/p1
0243240
2011/01/29(土) 14:17:43ID:???lib/jpmobile/mobile/docomo.rb
をいじって、SJISへのコンバート処理をコメントアウトし、必ずUTF8を使うようにしたところ
問題が起こらなくなりました。
あまりよくない方法の気もするので、もっと良い解決策があったらご教授お願いします m( _ _ )m
0244nobodyさん
2011/01/29(土) 15:13:12ID:XpJ1rxWJソース見て見たけど、mobile_filterってonlyとかexceptオプション認識しないのな…
swfを返すとこだけ別コントローラにして、mobile_filterをそれ以外に書く、
で回避できぬ?
0245239
2011/01/29(土) 16:47:50ID:???>>242
分かり易い説明ありがとうございます。
トランザクションとロックの関係が分かっていなかったので混乱していました。
トランザクション中に更新されうる行をMySQLが判断してロックをかけてくれる、
というところでスッキリしました。
ただ、以下の点については
>Aさんが行1,2を更新している間は、Bさんは行1,2のコミットが終わるまでは、
>UPDATEやDELETEはもちろん、SELECT文での読み取りも不可能になる。
SELECT文はロックをかけないのでAさんが更新中でもBさんはSELECT可能なのではないですか?
もしSELECTも不可能になるのであれば何も心配無いのですが、
SELECTが可能なのであればBさんの更新でAさんの更新が消えてしまいます。
見当違いなことを言っていたらすいません。
0246nobodyさん
2011/01/29(土) 17:08:16ID:???何を言いたいのか意味不だがトランザクションで複数のSQL文をまとめたところでロックをかけるのはSQL単体レベルってのは理解してる?
0247nobodyさん
2011/01/29(土) 17:43:34ID:???BさんがSELECT実行するのは可能だが
コミット前のAさんの変更分をBさんがSELECTで読み取ることは出来ない
って意味だろ
■ このスレッドは過去ログ倉庫に格納されています