【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/
0766nobodyさん
2012/01/25(水) 14:04:53.51ID:T66svPqtfriend
entry
があります。
user にはstatusがあって、statusがwarningの物は友人でなくとも無条件で表示したいです
entry.joins( :user => :friend ).("users.status = ? OR friends.post_user_id = ?" , "warning" , session[:user_id] )
これで取れるかと思ったのですが、users.status = ?がスルーされているのか
後のfriendの記事しか取れません
joinについて何か大きな勘違いをしているのかもしれませんorz
どうすればとれますか?
0767nobodyさん
2012/01/25(水) 14:19:09.42ID:???すみません、説明不足でした。
正確には、ある条件でデータを絞った後で、その中でのフィールドの最大値を取得したいということなのです。
まずFooというテーブルにbar、bazという2つのフィールドがあるとします。
イメージ的には、やりたい内容は以下のようなことです。
-------------------------------------
f = Foo.find_by_bar(○○○)
puts f.maximum('baz')
-------------------------------------
このやり方ですと、undefined method になります。
確かに、Foo.maximum('bar')という風に、絞り込んだものに対してではなく、直接最大値を取得するやり方ならうまく取れました。
絞り込んだものに対しては、maximumは使えないのでしょうか?
0768nobodyさん
2012/01/25(水) 14:54:10.77ID:???すみません、自己解決しました。
以下の方法で、条件を絞ったうえでの最大値を取得できました。
Foo.maximum(:bar, :conditions => {:baz => ○○○})
お騒がせしてすみませんでした;;
0769nobodyさん
2012/01/25(水) 20:32:05.37ID:CoUa4JnsところでFoo.find_by_barだとfはFooのインスタンス1つになるわけだが。
0770nobodyさん
2012/01/25(水) 21:57:29.42ID:???model = Model.new(param[:prefix])
model.save()
ってやり方は、悪意あるユーザがフォームにないパラメータを送ると
意図しない属性も変更されてしまうと思うのですが、そんなことないですか。
0771nobodyさん
2012/01/25(水) 22:04:45.35ID:???0772nobodyさん
2012/01/26(木) 05:29:31.01ID:WYeK+tHX例えば、ブログなんかで
最新のコメント
なーんてものがありますよね?
ああいう、頻繁に更新される可能性がある一箇所のせいで結構つらい思いをすることもあります
ログイン→ようこそ◯◯さん等もそうですが
いくつか考えたのですが、ページキャッシュしてしまい
そういった部分を全てAjax等で非同期読み込み
上でも出てたJavascriptでCookieを調べて割り振り
どちらも、Rails外での話なのでどうしても面倒くささを感じてしまいます……
0773nobodyさん
2012/01/26(木) 07:00:43.56ID:LIf9fd2Vところで、フラグメントキャッシュって一定時間で破棄って出来ない?
5分で破棄したいのだけど……
0774nobodyさん
2012/01/26(木) 11:45:32.46ID:???>mass assignできなくすれば大丈夫
ありがとうございます。でもこれってデフォルトでは作る側がいちいち設定する必要があるんですよね。
設定しなかった場合は、悪意あるユーザからの攻撃をいとも簡単に受けてしまう。
なんでデフォルトで禁止してないんですかね。
ttp://d.hatena.ne.jp/halflife/20081006/1223302382
> みたいにmass assignmentを使ってしまうと、entry[user_id]=1 とか適当なパラメータを送るだけで誰か他のユーザの投稿として Entry を更新することができたりするわけで。
> もちろん手を抜くなとか忘れるのが阿呆だとかはあるかもしれないけど、わたしのような初心者には結構危なく感じた。
>
> なんでRailsはデフォルトでmass assignment不可にしないんだろう?
> デフォルト不許可にしてしまうと、スキーマが変更されるたびに合わせて attr_accessible を修正しなきゃいけないとかDRYじゃねえよウゼーという感じなんだろうか。
0775nobodyさん
2012/01/26(木) 11:55:04.00ID:???@enty = current_user.entries.find(params[:id])
みたいに。
そう書いてないとダメだが。
0776nobodyさん
2012/01/26(木) 12:28:43.36ID:???最近ならそういった情報で更新されにくいものは
クライアントサイドのlocalStorageにいれてしまうってのもありだな
サーバーへアクセスされないからAJAXの負荷が無い
0777nobodyさん
2012/01/26(木) 16:01:35.70ID:???なんでそれで防げたことになるんですか?
今問題にしているのはcreateやupdateの話であって、findは関係ないような。
0778nobodyさん
2012/01/26(木) 16:30:47.72ID:???createでは
@entry.user_id = current_user.id
するだろ。
しなければもちろん外からセットされる。プロテクトしてなければ。
Railsに限った話ではなくて、そう作ればそうなるよという事。
0779nobodyさん
2012/01/26(木) 18:58:14.63ID:???もしかしてuser idのことだけ言ってますか?>>775で
>findした段階で大体防げるからなぁ。
と言っているのが不思議だったんですけど、user id *だけ* みればそうかもしれません。
しかし774などで指摘していることは任意のフィールドに当てはまることであり、
「findした段階で大体防げる」ようなものではないんじゃないですか。
0780nobodyさん
2012/01/26(木) 20:03:46.49ID:RmSk4BIq移行しようにも苦労しているのですが
おすすめのcsv読み込みツールってありますか?
0781nobodyさん
2012/01/27(金) 11:02:32.60ID:???> ありがとうございます。でもこれってデフォルトでは作る側がいちいち設定する必要があるんですよね。
> 設定しなかった場合は、悪意あるユーザからの攻撃をいとも簡単に受けてしまう。
これで終わりじゃん
0782nobodyさん
2012/01/27(金) 14:38:18.12ID:lH99fQFBhttp://weblog.rubyonrails.org/2012/1/26/rails-3-2-1-has-been-released
0783nobodyさん
2012/01/27(金) 18:06:51.09ID:???pages/:idの:idの部分を、ユーザの名前にしたくて困っています。
route.rbを
match "'pages/:username" => "pages#show", :via => :get, :path => :name
にしてrake route すると、
pages/usernameというルートしかできず…
方法ご存知な方いらっしゃいますか?
0784nobodyさん
2012/01/27(金) 22:26:17.58ID:50WK7S02def to_param; name; end
end
rails c
>> helper.controler = app
>> app.page_path(Page.create(:name => 'foobar'))
デフォルトのルーティングだと、名前であろうとパラメータ的にはあくまで
:idというパラメータとして渡されてくるので、:idだがnameとして扱うこと。
0785nobodyさん
2012/01/28(土) 05:39:03.61ID:???なぜわざわざ770みたいな脆弱な書き方を覚えてしまったのか
それは「横着な書き方」であって脆弱なのは当たり前だし、それでもRailsにはその脆弱さを防ぐ方法がいくつも備わってる
ちなみに775の言ってる事は俺も的外れだと思う
0786nobodyさん
2012/01/28(土) 10:17:16.60ID:???scaffoldが
foo = Foo.find(params[:id])
foo.update_attributes(params[:foo])
foo.save
みたいなコードを吐く以上、それがRailsの標準的なやり方と見なされてもしょうがない。
ところで
>それでもRailsにはその脆弱さを防ぐ方法がいくつも備わってる
って言ってるけど、具体的にはどんな方法があるの?
いくつもあるなんて知らなかった。
0788nobodyさん
2012/01/28(土) 20:25:27.97ID:kusQOV3zhttp://blog.digital-squad.net/article/106792109.html
Use attr_protected or we will hack you - Blog Articles - LessEverything
http://lesseverything.com/blog/archives/2008/03/11/use-attr_protected-or-we-will-hack-you/
0789nobodyさん
2012/01/28(土) 21:31:22.30ID:kusQOV3znewやらupdate_attributesやらでレコードの属性を「一括設定してもよい」属性を
指定するもの。逆に「一括設定を禁止」するattr_protectedとペアで考える。
http://read2ch.com/r/php/1292032736/#t508
0790nobodyさん
2012/01/28(土) 21:47:54.91ID:kusQOV3zhttp://www.oiax.jp/rails/zakkan/assign_attributes.html
update_attributes
http://blog.livedoor.jp/sasata299/archives/51485638.html
0791nobodyさん
2012/01/29(日) 14:01:57.04ID:???0792nobodyさん
2012/01/31(火) 07:44:07.71ID:???0793nobodyさん
2012/01/31(火) 11:18:03.40ID:???0795nobodyさん
2012/01/31(火) 21:42:32.22ID:J/mA32Fb0796nobodyさん
2012/01/31(火) 22:06:34.42ID:Nhw8SxC0we ended up shipping with just about 2,000 lines of code.
http://37signals.com/svn/posts/3094-code-statistics-for-basecamp-next
37signalsのBasecampは米国企業上位500社の321社が利用中 ? SEO Japan
http://www.seojapan.com/blog/37signals-and-fortune500
Ruby on Rails開発者のDavid Heinemeier Hanssonによる「起業の学校」講演!
http://toshio.typepad.com/b3_annex/2008/04/ruby-on-railsda.html
2000人の顧客が月40ドルを12か月払えば、100万ドルになる。
0797nobodyさん
2012/01/31(火) 22:10:27.23ID:Nhw8SxC0Getting Real by 37signals
http://gettingreal.37signals.com/GR_jpn.php
0798nobodyさん
2012/01/31(火) 23:23:30.79ID:Nhw8SxC0http://www.sponichi.co.jp/gravure/special/ir_2010/ir_ikezawaasuka/KPhotoNormal20100731176_p.html
0799nobodyさん
2012/02/01(水) 09:50:30.32ID:???Test.find(1).each do |key, value|
#処理
end
このような処理はできないんでしょうか?
0800nobodyさん
2012/02/01(水) 10:24:09.07ID:???attributesメソッドでハッシュが返ってきますね。
0801nobodyさん
2012/02/01(水) 21:36:14.66ID:MwDJMjTghttp://www.ideaxidea.com/archives/2012/02/twitter_bootstrap_v2.html
http://twitter.github.com/bootstrap/index.html
https://github.com/twitter/bootstrap/
0803nobodyさん
2012/02/02(木) 11:31:58.44ID:ppveFy64調べたところ
データベースアクセス周りが7割くらい占めてました
かるく調べたんですが
めむきゃっしゆ?
find_by_sql
インデックスをはる
あたりが王道のようですが、これでどのくらいかわるものですか?
0804nobodyさん
2012/02/02(木) 13:06:40.10ID:???データ量によっては10倍以上効く
0805nobodyさん
2012/02/02(木) 13:07:29.66ID:???0806nobodyさん
2012/02/02(木) 13:25:21.92ID:nGOtgXLdありがとうございます
find_byでしょっちゅう検索するものに貼ってみます
snsで、データはユーザー数が500くらい、コメント数が2万くらいです
>>804
確かにそうですよね……
うーんと、それじゃあ
twitterのようなリアルタイム性があるページキャッシュの効かないサイトを運営した場合
どのようなアプローチが考えられますか?
毎読み込みごとに結構な数のクエリが発行されるでしょうし、人数もとても多く、拡散などでリアルたいむに個々のつぶやきの情報もかわる
似たような機能があり、そこがボトルネックとなっております
例えば、ヘッダーフッターサイドバーと言った外枠だけをページキャッシュして、jqueryで内側を非同期読み込みー
などという方法で、とりあえずレスポンス速度のみは劇的に改善できるとも考えたのですが
すごくクールじゃないですよねー……
0807nobodyさん
2012/02/02(木) 14:24:52.03ID:???github なんかそんな感じじゃん
0808nobodyさん
2012/02/02(木) 15:27:49.48ID:???メンテナの間で同意とれてりゃだけど。
0809nobodyさん
2012/02/02(木) 17:34:08.38ID:???それ以前にパンクする規模じゃない気がするなあ
mysqlあたりのメモリ設定とかも見直したら?
0810nobodyさん
2012/02/02(木) 19:03:48.10ID:79jXgfNj言われてみれば……!
>>808
ですよねー……
中でなにやってようが早ければユーザーさんはかまいやしないですよね
>>809
なんとこんなものが……
Mysqlのメモリをデフォルトの16MBから500MB(搭載は4GB)まで増やしたらそれだけでかなり快適になりました
ありがとうございました
0811nobodyさん
2012/02/02(木) 19:26:54.19ID:???それ、スモールサーバの設定だったんじゃないかな
MySQLのチューニングは探せばいろんなページに設定例あるし本も出てるよ
0812nobodyさん
2012/02/03(金) 12:11:30.89ID:NPWpUqidRails2では
Actioncontroller::Base.page_cache_directory = "/var/www/hoge/public/page_cache" こんな感じ?
だったようですが、3だとうまくいきません。
やりたいことは、「一定時間でのキャッシュの削除を簡単にする」です。
10分毎にページキャッシュをクリーンしたいので、cron で rm * で一括で消したいと考えております
0813nobodyさん
2012/02/03(金) 17:24:14.90ID:hJMEWrmo勉強をかねて掲示板を作成しようと思ったのですが、
resourcesのネストでうまく行かなくなってしまいました
rails3.1.3
ruby1.9.2
スレッドをtopic,レスをpostという名前でモデルをscaffoldで作って、モデルで一対多の関係を持たせて
routes.rbに
resources :topics do
resources :posts
end
の様なルーティングを作り、post周りのビューのpathヘルパーをtopic_post_pathの様に変えました
http://localhost:3000/topics/1/posts へのアクセスはうまく行くのですが
http://localhost:3000/topics/1/posts/new へのアクセスは
Routing Error No route matches {:controller=>"posts", :format=>nil}
の様にエラーが出てしまいます
どこをどの様に変更したらhttp://localhost:3000/topics/1/posts/new でpostを作成できるでしょうか?
どなたか回答していただけたらうれしいです よろしくお願いします
0814nobodyさん
2012/02/03(金) 18:00:44.99ID:???もしくは
new_topic_post_path(topic_id: @topic.id)
みたいにしてないのでは
0815nobodyさん
2012/02/03(金) 18:21:28.06ID:???rake routes
実行して、できるパスを確認しよう
0816nobodyさん
2012/02/03(金) 20:29:33.95ID:hJMEWrmo色々試した結果、postsコントローラに @topic = Topic.find(params[:topic_id])
を作っていなかった事が原因みたいでした
リンク先のurlはセオリー道理に作れていたのにrouting error だったのですごく悩んでしまいました。
回答ありがとうございました。
0817nobodyさん
2012/02/04(土) 08:28:37.17ID:Prkek0Dn申し訳ありません、レスありがとうございました
調べてみます
>>810の「MySQLのメモリを大きくする」を行なってから
Railsがめちゃくちゃ重くなってしまいました
webrickサーバーでのテストでは
F5を2,3回押すだけでRuby1.8のCPU使用率が90%近くまで跳ね上がり1分近くフリーズします
ちょっと重めのTOP(以前はローカル環境なら1秒程度で表示)が、20秒ほどかかるようになってしまいました
更に10秒くらいの間Mysqldの使用率が100%に張り付きます
PHPmyadminから直でSQL打つと一瞬で帰ってきます
メモリ変更に関してはバックアップに戻したのですが速度は元に戻りません
原因がMysqlにあるのか、Rubyにあるのか、Railsにあるのかわからなくなってしまったのですが
どういった対処がとれますでしょうかorz
1.Apache+Passengerで起動してもページ表示時Rubyの使用率90%
2.このアプリを別サーバーに持って行くとサクサク動く
ということで、Mysqlとの接続周りで問題が発生している?
development.log production.logを見ても特にエラーは出てません
どこを確認すればよろしいですか?
よろしくお願いします
0818nobodyさん
2012/02/04(土) 08:47:22.10ID:WPtHudN40819nobodyさん
2012/02/04(土) 08:49:46.88ID:???ログが肥大化してんじゃないの?
developmentなら再読み込みでCPU使用率急に上がるのは特に変じゃない。
以前は重くなかったって言ってるけど、「以前」というのが開発スタートしたてとかだったら、実装が悪い。
0820nobodyさん
2012/02/04(土) 08:53:05.62ID:Prkek0Dnググッて来ましたが違うようです
>>819
ありがとうございます。
本番環境もローカルもダメです
本番サーバーでいきなりMysqlのメモリ増やす→あれなんか重い
ローカルで確認の為にMysqlのメモリ増やす→あれなんか重くなった
両方設定戻しても重さは元に戻らず
両方Productionで動かしても変わらないです
ログは定期的に消してます
”重くなった”は、2日前と比べてです
データ量も殆ど変わってないですし、別サーバー持ってくとサクサク動くので
Mysqlのメモリをいじったのが引き金になったようです
0821nobodyさん
2012/02/04(土) 09:03:56.06ID:Prkek0Dnどうやら問題はMysqlにあるようです
そうなると、Mysqlスレになるのかな?
アドバイスありがとうございました
0822nobodyさん
2012/02/04(土) 09:04:47.54ID:???メモリの設定もいろいろあるから、どこを500MBに変えたかだな
0823nobodyさん
2012/02/04(土) 09:12:14.59ID:Prkek0Dnえ
key_buffer?を増やしてみました
その後色々いじったので何がなにやら……
PHPMYadminで赤いところを見ると
Innodb_buffer_pool_reads 526 InnoDB がバッファプールの内容を利用できず、シングルページ読み込みを行わなければならなかった論理読み込みの回数
Handler_read_rnd_next 86 G データファイルの次の行を読み込んだリクエストの数。この値が高いのはテーブルスキャンを大量に実行しているためです。一般にこれはテーブルのインデックスが不適切か、クエリがインデックスを利用するように書かれていないことを意味します
Created_tmp_disk_tables 1,598 k ステートメント実行中にサーバがディスク上に自動生成した一時テーブル数。Created_tmp_disk_tables の値が大きい場合は tmp_table_size の値を増やしてディスク上ではなくメモリ上に一時テーブルを構築した方がよいかもしれません
Opened_tables 414 開いているテーブルの数。開いているテーブルが多い場合はおそらくテーブルキャッシュの値が小さすぎます
82Gのところがなんかおかしい気がします
0824nobodyさん
2012/02/04(土) 11:37:03.61ID:CRUXYrszMySQLにメモリ割り当てすぎてスワップ使ってるとかなんじゃないかなぁ。
0825nobodyさん
2012/02/04(土) 11:58:01.12ID:???今まではどこかのサンプルで見たIndexControllerって名前でずっとやってきてました。
root to: 'index#home'
みたいな感じで。
特に不都合はないですが、もっと良い方法とか命名とかありますか?
0826nobodyさん
2012/02/04(土) 11:59:11.63ID:???0828nobodyさん
2012/02/04(土) 13:46:13.35ID:???config/environments/production.rbが設定ファイルで、
config.action_controller.page_cache_directory = "ここで設定"
参考) http://railsdoc.com/cookie_cache
>>823
状況がよくわからんので箇条書きで色々と書くね
鵜呑みにせずに参考程度にしてください
・インデックスをはってないのは間違いないし、そこが絶対にボトルネックになってると思う
>Handler_read_rnd_next 86 G から察するにインデックスを適切に張ってないのは間違いなくて、データを全スキャンしてる
・Railsには一つのSQLクエリごとに何秒かかったかをログにしてくれているのでそれを見る
あなたの場合はこれをまず詳細に分析するべきだと思う
表示はms(マイクロ秒)での表示 1000ms=1秒 適切なクエリなら数msから数十msで返って来ているはず
インデックスを適切に張っていないと遅いクエリ(スロークエリ)が頻出しているはず
・MySQLのストレージエンジンにはInnoDBとMyISAMがある
MySQL5.5以降はデフォルトがInnoDBで、それ以前のバージョンならMyISAM
で、「MySQLに割り当てられるメモリを大きくする」という場合に、MyISAM使ってるのにInnoDBの割当メモリを大きくしても意味が無い 逆もしかり
以上です
とにかくインデックスきちんとすれば4Gもメモリ積んでるサーバーなら余裕で捌けるはずなので頑張ってください
0829nobodyさん
2012/02/04(土) 16:07:59.57ID:Prkek0Dn同じサーバーで動かしています
どうやらそのようでした
再起動したら少しましになりました
>>828
ありがとうございます。
InnoDBを使っていたので全く見当違いのメモリを増やしておりました
インデックスを貼ろうと思ったのですが、ちょっと初心者もいいとこでどこに貼っていいのか……
Railsの効率の悪いSQLを探知してくれるプラグイン?あったと思うのですが3になってから使えなくなってしまいまして……
0830nobodyさん
2012/02/04(土) 17:05:32.58ID:s47e9LRe0831nobodyさん
2012/02/04(土) 17:16:05.77ID:Prkek0Dnですね、痛感しました
しかし、スロークエリログを吐き出す設定にしているのにファイルが出力されません
なんででしょう
とりあえず色々いじってみたいと思います
0833nobodyさん
2012/02/05(日) 00:35:52.53ID:83n8dgCihogehoge**************************
みたいになりますが、application.jsという形で生成はされないですか?
アクセスのたびに毎回ライブコンパイルが走り困っております
0834nobodyさん
2012/02/05(日) 02:48:02.82ID:???初心者にはどちらが向いてますか?
railsの場合はレンタルサーバーの環境ごと考えなきゃいけないから
面倒くさいのかな?という認識
0835nobodyさん
2012/02/05(日) 07:21:14.51ID:???使いたいサーバで選んだらいいんじゃない?
OSがWindowsでVMとか使う気ないならPHPの方が気楽に開発環境整えられるかもな。
Railsの場合は使えない鯖ではそもそも考えるだけ無駄だから
鯖が決まってないならそんなに悩む必要はないと思う。
0836nobodyさん
2012/02/05(日) 09:32:04.84ID:5hDTMn6/http://blog.livedoor.jp/dankogai/archives/50835571.html
0837nobodyさん
2012/02/05(日) 10:13:56.63ID:???個人的にはRuby(っていうかRails)もPHPも両方触って気に入ったほう使えばいいと思うよ。
先のことを考えると両方触っといて損はないと思うし。
0838nobodyさん
2012/02/05(日) 10:27:25.69ID:???0839nobodyさん
2012/02/05(日) 10:34:13.56ID:???気になる部分は全部検討するぐらいのフットワークの軽さが必要だと思うよ。
0840nobodyさん
2012/02/05(日) 10:51:12.27ID:???使えるけど使いたくない
0841nobodyさん
2012/02/05(日) 11:01:19.14ID:???ただ頭数の揃えやすさやとりあえずの速さでいくとそう悪い言語じゃなくなっちゃうんだよな・・・
0842nobodyさん
2012/02/05(日) 11:10:38.58ID:83n8dgCi画像1個読み込むのにもRails呼ばれるのは重すぎやん
0843nobodyさん
2012/02/05(日) 11:38:38.62ID:???nginxとかApacheとかで
0844nobodyさん
2012/02/05(日) 11:46:16.72ID:83n8dgCiプリコンパイルすると
hoge.***********.js
とかになるやないですか?
でも、生成されるソースでは
application.css
とか
hoge_image.**********.png
になってるので
サーバーから呼んでも勿論存在しないと言われるのでRailsに一度投げるしか無い
って感じです
方法としては、ソースコード生成時に<img src="hoge_image.png">を<img src="hoge_image.************.png">
って手打ちする方法が一つ
そもそも、digestを付けないようにプリコンパイルするが一つ
だと思うのですがどっちも上手くいかんです
congig.assets.digest = false
にしてもtrueにしても効果ないし
きちんとimage_tagから画像呼んでもdigestが付加されないでござった
どうしようもないので、Assets以下をPublicに移動したら「そこにCss置くなks」って起動すらしてくれない
0845nobodyさん
2012/02/05(日) 11:47:13.32ID:83n8dgCi>application.css
>とか
>hoge_image.png
>になってるので
でござった
0846nobodyさん
2012/02/05(日) 12:03:52.32ID:83n8dgCiimage_tag使っても表示されないのはなぜなんでしょ……
そんな設定とかあります?
0847nobodyさん
2012/02/05(日) 12:15:39.78ID:83n8dgCiRailsを途中で3.1→3.2にしたのが原因のようです
新しいの作ってフレームワーク部分以外移動したら全部動きました
連レスごめんなさい
0849nobodyさん
2012/02/05(日) 18:42:15.47ID:yrFQBJuzIndexControllerだったらだいぶマシ。
0850nobodyさん
2012/02/05(日) 22:06:59.42ID:???サーバの画面でenter押せば進むんだけどなんでだろう。
0851nobodyさん
2012/02/05(日) 23:41:33.56ID:???0852nobodyさん
2012/02/06(月) 00:56:50.86ID:???0853nobodyさん
2012/02/06(月) 01:02:33.33ID:???apache再起動の方が10倍くらい早い
おれだけ?
0854nobodyさん
2012/02/06(月) 12:39:14.01ID:6CAJ3kKyWinで開発していたアプリを
本番環境を想定した仮想CentOS上で動かそうとしたんですけど
winでは動いていたものが、CentOS上だと
ActionView::Template::Error (invalid byte sequence in UTF-8):
というエラーをはいて動かなくなってしまいました。
エラー箇所はapp/views/layouts/application.html.erbの
<%= stylesheet_link_tag 'application', :media => 'all' %>
<%= javascript_include_tag "application" %>
なんですけど、この二行をコメントアウトすると、表示は崩れますが動きます。
文字コードが何かおかしいのかとも思い
app/assets/stylesheets
app/assets/javascripts
内も調べたんですが、これといっておかしなところも見つかりませんでした。
仮想CentOS上で適当に作ったアプリは普通に動くんですけど
これってどのような原因が考えられるのでしょうか?
環境はruby1.9.3、rails3.2.1です。
0855nobodyさん
2012/02/06(月) 13:50:54.28ID:tyxpRyp2書いてある通り
CSSやJSがUTF8になってない
0856854
2012/02/06(月) 14:02:57.33ID:???app/assets/stylesheets
app/assets/javascripts
内のファイルを全部エディタで開いてみる限りUTF8(BOM無し)のようですし
ディレクトリ内を試しに全削除しても同様のエラーが出てしまいます。
それとも、もっと違ったところが間違っているのでしょうか?
0858nobodyさん
2012/02/06(月) 15:50:12.13ID:???もしくは precompileしたのが残ってる。
0860854
2012/02/06(月) 16:41:25.32ID:???おっしゃるとおり、precompileしたものはしていて消しててなかったです。
public/assets
.sass-cache
などそれっぽいものを削除して再起動してみたのですが同じエラーが
precompileは上記以外にも消すものってありますか?
0861nobodyさん
2012/02/06(月) 17:27:45.73ID:???0862nobodyさん
2012/02/06(月) 17:41:08.00ID:???はい、そこらへんは確認しました。
あと、さきほどprecompileのヒントをいただいたので
試しにrake assets:precompile --traceしてみたら
** Execute assets:precompile:primary
rake aborted!
invalid byte sequence in UTF-8
/usr/local/rvm/gems/ruby-1.9.3-p0/gems/hike-1.2.1/lib/hike/index.rb:80:in `block in entries'
/usr/local/rvm/gems/ruby-1.9.3-p0/gems/hike-1.2.1/lib/hike/index.rb:80:in `reject'
/usr/local/rvm/gems/ruby-1.9.3-p0/gems/hike-1.2.1/lib/hike/index.rb:80:in `entries'
みたいに出ました。
hike/index.rb:80を見てみたんですが自分の能力では、どうしてなのかちょっとわからなかったです。
0863nobodyさん
2012/02/06(月) 18:07:42.98ID:???resources :samples
によって定義されたルートたちを
"admin/samples"のようなURLに一括して置き換える方法ってありますか?
できれば元のルートも無効にしたいのですが。
0864863
2012/02/06(月) 18:13:46.83ID:???resources :samples, :path => "admin/samples"
と変更することでうまく行きました。
0865nobodyさん
2012/02/06(月) 20:15:58.58ID:FI1AngH7>hike-1.2.1/lib/hike/index.rb
ブロックの中で例外になってて、ブロックの中身は
entry.to_s =~ /^¥.|~$|^¥#.*¥#$/
entryはPathname.new(path)の中にある個々のファイルの名前文字列。
正規表現のほうはスクリプトエンコーディングになってるはず。
ファイル名のエンコーディングって面倒くさそうだな。
とりあえずブロックの中にいるときにentryのエンコーディングやバイト列を
検分してみたらどうか。
■ このスレッドは過去ログ倉庫に格納されています