【RoR】Ruby on Rails Part18
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2014/01/11(土) 20:04:00.68ID:???http://kohada.2ch.net/test/read.cgi/php/1382097427/
http://unkar.org/r/php/1382097427/
■参考サイト
<英語>
本家: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://doc.ruby-lang.org/ja/1.9.3/doc/index.html
0138nobodyさん
2014/02/10(月) 19:42:03.77ID:???どこで使ってるんだろう
0139nobodyさん
2014/02/10(月) 20:26:03.63ID:???before_filter exceptみたいな感じで指定することはできないのでしょうか
どうしてもrenderの直前にならざるをえないのでしょうか
0140nobodyさん
2014/02/10(月) 22:14:36.36ID:???http://api.rubyonrails.org/classes/AbstractController/Layouts/ClassMethods.html#method-i-layout
0141nobodyさん
2014/02/10(月) 23:48:40.06ID:???すいません
クラスメソッドだと条件文が使えないのでフィルター(インスタンスメソッド)で使いたいのですが
方法はないのでしょうか
0143nobodyさん
2014/02/11(火) 02:01:21.34ID:oikpYNJm> Symbol
> call the method specified by the symbol, which will return the template name
これ、コントローラのインスタンスメソッドなんだよね。
0144nobodyさん
2014/02/11(火) 02:25:45.15ID:iwHGH8gShttp://www.reddit.com/r/scala/comments/1xg3oa/skinny_framework_scala_on_rails/
http://skinny-framework.org/
0145nobodyさん
2014/02/12(水) 02:41:27.20ID:???学習コスト高いわ
0146nobodyさん
2014/02/12(水) 04:13:31.94ID:???require 'sinatra'
get '/' do
'Hello world!'
end
gemをインストールして動かしてみる。
gem install sinatra
ruby myapp.rb
localhost:4567 を見る。
http://www.sinatrarb.com/intro-jp.html
0148nobodyさん
2014/02/13(木) 06:40:07.00ID:???手元で書いて動くコードは1分でできるのに、
例外処理をして9割の完成度に上げるのには、とてつもなく時間がかかる場合がある
http://el.jibun.atmarkit.co.jp/rails/2011/09/web9-1e8b.html
スタートアップ企業で8年間Webの開発をしてみての反省点いろいろ - Masatomo Nakano Blog
6. サーバ周りの人材をしっかり確保しよう
http://b.hatena.ne.jp/entry/blog.madoro.org/mn/84
Ruby on Rails が簡単というのはウソ - #生存戦略 、それは - subtech
http://subtech.g.hatena.ne.jp/secondlife/20120309/1331279496
今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 | つい全力ツッコミしてしまうエンジニアCEOのブログ | sumyapp
http://b.hatena.ne.jp/entry/blog.sumyapp.com/2013/07/no-recommend-rails/
0149nobodyさん
2014/02/13(木) 06:41:23.89ID:???サーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ハードウェアの多重化なんて必要?
企業で使うとかじゃなく個人的に細々と立てたサーバが攻撃されることなんて滅多にないよね?
攻撃が来るって言ったって大した数じゃないんでしょ?
攻撃されたって大したことは起きないんでしょ?
http://b.hatena.ne.jp/entry/tmaeda.s45.xrea.com/20041101.html
運用中のApache Webサーバの大半にセキュリティ脆弱性 | マイナビニュース
http://news.mynavi.jp/news/2014/02/11/038/
0150nobodyさん
2014/02/14(金) 12:01:08.20ID:???http://www.itmedia.co.jp/enterprise/articles/1402/13/news043.html
ntpd の monlist 機能を使った DDoS 攻撃に関する注意喚起
http://www.jpcert.or.jp/at/2014/at140001.html
0151nobodyさん
2014/02/15(土) 01:45:41.24ID:???huluに続くと言われてる
sidereelもRailsだよ
日本はどうしてRails需要がこんなにもないのか?
0152nobodyさん
2014/02/15(土) 02:00:18.58ID:???Rubyが日本発だから勘違いしてる人もいるかもしれないが、Railsは英語が使えない人は
お断りレベルで英語情報中心だからだと思われる
0153nobodyさん
2014/02/15(土) 09:53:45.58ID:???日本で小規模で始めるには情報が足りなさ過ぎることだろうな
0154nobodyさん
2014/02/15(土) 10:54:35.90ID:???パフォーマンスとか何も考えずに作るし
0155nobodyさん
2014/02/15(土) 11:02:51.85ID:???http://blog.tkmr.org/tatsuya/show/268-ruby-on-rails-10-tips
findメソッドはパワフルだけど基本SELECT * FROMなので場合によっては:selectで必要なカラムだけ読み込む、また:limitや:offsetを活用する
ごくごく基本的な Ruby on Rails のパフォーマンスチューニング
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20071114
:conditions オプションでキーに使われるようなカラムにはインデックスを作成すべし
:selectで取得するカラムを絞ったらパフォーマンスが倍に
http://brass.to/blog/active_record_select_option.html
レコード件数は110万件くらい
カラム数は30程度
インデックスは効いている(explainで確認済み)
Rails で MySQL を使うときの注意点 | METAREAL
http://www.metareal.org/2007/07/24/notes-on-rubyonrails-with-mysql/
SQL を二段階に分けるといい
まず、最初の SQL でレコードの ID だけを SELECT する(int だけなので、このときの一時テーブルはメモリ上に作られる)
次に、その ID で必要な TEXT や BLOB を SELECT するんだ(これは ID による単純な検索なので一時テーブルは使われない)
MySQLパフォーマンスチューニングのためのインデックスの基礎知識
http://d.hatena.ne.jp/kiyo560808/20101117/1289952549
0156nobodyさん
2014/02/15(土) 16:41:03.81ID:???0157nobodyさん
2014/02/15(土) 16:44:08.36ID:???0158nobodyさん
2014/02/15(土) 16:59:29.59ID:???海外留学して英語がネイティブな人と仕事したことあるけどどう頑張っても勝てそうに無いと思った
0159nobodyさん
2014/02/15(土) 17:42:49.20ID:???ウェブ系の仕事に就いたらまさに英語力が命だったでござるの巻
0160nobodyさん
2014/02/19(水) 10:20:17.36ID:ELco+zCchttp://weblog.rubyonrails.org/2014/2/18/Rails_3_2_17_4_0_3_and_4_1_0_beta2_have_been_released/
0161nobodyさん
2014/02/20(木) 01:42:55.72ID:???管理画面でモデルを管理するとき、http://hoge.com/admin/モデル名にしようと思っています。
このモデル自体はアプリケーション全体から参照されているんですけど、
ルートにこういう記述をしたら
namespace :admin do
resources :model
end
コントローラーだけでなくmodelも参照するときは常にAdmin::Modelって感じに参照しないとダメだって怒られました。
でもそれは煩雑なのですが・・・どうすればいいんですかね?
0162nobodyさん
2014/02/20(木) 07:04:05.02ID:???resources :model
end
0163nobodyさん
2014/02/20(木) 10:26:12.50ID:ATjg5jOfhttp://piko.hateblo.jp/entry/2013/10/09/111746
0164nobodyさん
2014/02/20(木) 13:10:05.02ID:???>結局のところクルマを運転する上で、中身なんぞ知らなくてもいいだろ?使う奴は運転する技術だけ習得してこいって考え方がrailsだと思います。
土方向きだけのことはあるな
0166nobodyさん
2014/02/23(日) 14:40:29.71ID:iS1220phmy_class = MyClass.new
my_class.class_eval do
def m1; 'hello!'; end
def self.m2; 'hello!'; end
end
上記の場合、カレントクラスのMyClassにm1というインスタンスメソッドが追加されて、
カレントクラスのMyClassの特異クラスにm2という特異メソッドが追加されるとう理解でいいですか?
0167166
2014/02/23(日) 15:12:35.43ID:iS1220ph0168nobodyさん
2014/02/25(火) 23:28:09.96ID:???データベースは作らず、読み書きできるYAMLを作るのが普通ですか?
0169nobodyさん
2014/02/26(水) 00:46:37.59ID:???configみたいなテーブルでも作って。
0170nobodyさん
2014/02/26(水) 02:08:48.86ID:???0171nobodyさん
2014/02/26(水) 21:18:20.42ID:kpHlwgHZhttp://b.hatena.ne.jp/entry/www.slideshare.net/eccyan/ruby-on-rails-on-mysql
0172nobodyさん
2014/02/27(木) 00:32:44.15ID:???サーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ハードウェアの多重化なんて必要?
企業で使うとかじゃなく個人的に細々と立てたサーバが攻撃されることなんて滅多にないよね?
攻撃が来るって言ったって大した数じゃないんでしょ?
攻撃されたって大したことは起きないんでしょ?
http://b.hatena.ne.jp/entry/tmaeda.s45.xrea.com/20041101.html
運用中のApache Webサーバの大半にセキュリティ脆弱性 | マイナビニュース
http://news.mynavi.jp/news/2014/02/11/038/
VPSに来た攻撃観察記
http://www.slideshare.net/ozuma5119/vps-26061504
VPSに来る悪い人を観察して通報してインターネットを少し良くする
http://www.slideshare.net/ozuma5119/vps-tuho
0173168
2014/02/27(木) 00:58:46.01ID:???でもConfigモデルを作るとしてキーバリュー式だとform_forとかと相性悪いんですよね・・・
かといって1行しかあり得ないレコード作るのってどうなんでしょうか
Railsでなければ 本番 開発用 テスト用って感じで3レコードは作るのですが
0174nobodyさん
2014/02/27(木) 05:29:33.48ID:???0175nobodyさん
2014/02/28(金) 21:18:49.55ID:Sd8nPPeFこの場合、Postするコントローラーはどこにすべきなんでしょうか?
resources: foo
resources: bar
とあって、foos#updateとbars#updaterがあるのですが
この場合、foosbars_controllerに#updateを作るべきなのでしょうか?
0176nobodyさん
2014/02/28(金) 21:37:18.82ID:???> この場合、foosbars_controllerに#updateを作るべきなのでしょうか?
色々考え方はあるけど、これが一番素直じゃないかな
0177nobodyさん
2014/02/28(金) 22:09:35.94ID:???http://tanihiro.hatenablog.com/entry/2014/01/09/193720
0178nobodyさん
2014/02/28(金) 22:17:40.49ID:???レイヤーがもうちょい上になる業務よりのレイヤーで切り分ける感じにするかな
businessA_controller#updateみたいな感じで。
色んなリソース持ってるユーザーのマイページをmypage_controllerであれこれ処理したりしてる
0179nobodyさん
2014/03/01(土) 16:53:35.83ID:kyl0LBj5http://toro.2ch.net/test/read.cgi/tech/1393660194/2
0180nobodyさん
2014/03/01(土) 22:23:30.44ID:???>>178
ありがとうございました。
参考にします
>>177
ありがとうございました。
Rails4限定なんですね
0181nobodyさん
2014/03/02(日) 16:04:33.91ID:???調べてみたところshop.itemsは実際は3レコードあるのに、
shop.items.count => 1
shop.items.size => 3
このようにcountだと1が返ってました。
どういうことなんでしょう・・・
0182181
2014/03/02(日) 16:09:38.67ID:???puts shop.items.map(&:name)
=>
item1
item2
item3
puts shop.items.pluck(:name)
=>
item3
0183nobodyさん
2014/03/02(日) 19:09:13.57ID:???AbstractController::ActionNotFoundを表示しない方法ってありませんか?
存在しないアクション叩かれてエラーログが大量になるので困ってます
0184あ
2014/03/02(日) 19:42:02.77ID:???0185nobodyさん
2014/03/02(日) 19:43:53.19ID:???0186nobodyさん
2014/03/02(日) 21:06:18.23ID:f/Pqujp3もうひとつはbackup_image_idというカラム名です。
@model.backup_imageとプロパティにアクセスしたときに、自動的にImageテーブルにクエリー走らせることはできないのでしょうか?
0187nobodyさん
2014/03/02(日) 21:12:10.87ID:???0188nobodyさん
2014/03/03(月) 00:15:09.71ID:???http://rubyist.g.hatena.ne.jp/rochefort/20090802/p1
0189nobodyさん
2014/03/03(月) 00:42:54.12ID:eHHADPWD0190nobodyさん
2014/03/03(月) 01:01:41.74ID:???複数のRailsアプリ(複数ドメイン)を走らせてる猛者はいる?
Railsアプリ1つにつきVPSを1つ契約するのが勿体なく感じてきた
0191nobodyさん
2014/03/03(月) 01:03:32.20ID:???0192nobodyさん
2014/03/03(月) 11:32:43.29ID:???0193nobodyさん
2014/03/03(月) 12:05:52.25ID:tPpkCX6/http://www.mcafee.com/japan/security/mcafee_labs/blog/content.asp?id=1379
New York Timesの記事によれば、同紙は米Symantecのウイルス対策製品を使っていたが、
Mandiantが調べた結果、攻撃者が使った45種類のカスタム版マルウェアのうち、Symantecの製品で検出できたのは1種類のみだったという。
http://bylines.news.yahoo.co.jp/yamamotoichiro/20130204-00023332/
ソニーPSNの個人情報漏洩に英国で約3500万円の罰金支払い命令、「防げた事件」と判定 - Engadget Japanese
http://japanese.engadget.com/2013/01/24/psn-3500/
Adobeにサイバー攻撃、顧客情報290万人分抜き取り、製品のソースコードも -INTERNET Watch
http://internet.watch.impress.co.jp/docs/news/20131004_618168.html
0194nobodyさん
2014/03/03(月) 12:07:24.76ID:???自分でサーバ立てるのってなんか楽しそうだしスゴそうだよね?
サーバ立てるのなんてちょっとパソコンに詳しければ簡単にできるんでしょ?
ハードウェアの多重化なんて必要?
企業で使うとかじゃなく個人的に細々と立てたサーバが攻撃されることなんて滅多にないよね?
攻撃が来るって言ったって大した数じゃないんでしょ?
攻撃されたって大したことは起きないんでしょ?
http://b.hatena.ne.jp/entry/tmaeda.s45.xrea.com/20041101.html
0195nobodyさん
2014/03/03(月) 12:43:05.49ID:???0196nobodyさん
2014/03/04(火) 00:14:26.81ID:???リンク踏んだらアフィリ貼りまくってるぺーじだったし
0197nobodyさん
2014/03/04(火) 02:27:29.26ID:???定期的にでっかいサイズのCSVファイルを作成してFTPサーバーにアップする処理をしています。
しかしこの処理が何回か実行されるといつもメモリオーバーのエラーになってしまいます。
どうやら一回のバッチのたびにメモリ使用量が20%ぐらい上がり、処理が終わっても下がらず
それが積み重なっていつか溢れてしまう、という現象のようです。
しかしどこが悪いのか分かりません。アドバイスいただけないでしょうか。
具体的には以下のような流れです。
csv = CSV.generate do |csv|
# 巨大なCSVを書き込む処理
end
ftp = Net::FTP.open('test-server.com', 'id', 'pass')
f = Tempfile.new('myfile.csv')
f.write(csv)
ftp.put(f.path, 'myfile.csv')
f.close
ftp.close
このバッチをclockworkで定期的に走らせています。
何かのリソースが解放されないままになっているのでしょうか?
0198nobodyさん
2014/03/04(火) 02:31:49.04ID:???バッチが2回ほど回ったときにtopコマンドを叩くと
メモリ使用量が40%ぐらいになってます。
ここでclockworkを再起動すると、また0%近くまで戻ります。
0199nobodyさん
2014/03/04(火) 08:20:37.89ID:???0200nobodyさん
2014/03/04(火) 21:56:50.40ID:???ありがとうございます。
タスクの終わりにGC.startを入れてみましたが、メモリ使用量は下がらなかったです。
とりあえず1時間ごとぐらいに再起動することで乗り切りることにします。
低レイヤのこと分かってないとこういうのが辛いなあ
0201nobodyさん
2014/03/04(火) 22:25:57.36ID:???0202197
2014/03/04(火) 23:07:49.36ID:???意味するところがちょっと分からないです><
途中でTempfileを使っているのがオンメモリということでしょうか?
Fileクラスを使うということですか?この場合もFileオブジェクトを作るから同じですよね。
見当違いのことを言っていたらすいません。
0203nobodyさん
2014/03/04(火) 23:16:13.55ID:???0204197
2014/03/04(火) 23:43:42.65ID:???csvを作る処理は違うプロセスでやって
clockworkでは作成済みのCSVファイルをftpにアップするだけ、という流れでしょうか
0205nobodyさん
2014/03/04(火) 23:56:04.97ID:???それじゃメモリに巨大な文字列がのっかってるってことじゃん
じゃなくて、1行ずつファイルに書き込めって話
CSV.open は IO を引数に取れるから、詳しくはマニュアルを読め
0206nobodyさん
2014/03/05(水) 00:05:46.31ID:???間違えた。CSV.new な
0208197
2014/03/05(水) 00:26:50.66ID:???0209nobodyさん
2014/03/05(水) 01:28:25.87ID:???メモリ解放する術は無いの?nil入れても無駄だし。GC.startってそもそもちゃんと働くのかね
0210nobodyさん
2014/03/05(水) 02:02:07.37ID:???プロセスは一度確保したメモリは解放しないことが多いよ
これはRubyレベルの問題ではなく、OSレベルの問題
それ以前の問題として、巨大な文字列を作らずに済む方法があるんだから
まずはそれを試したらどうだい?
0211nobodyさん
2014/03/05(水) 02:05:30.78ID:???0212nobodyさん
2014/03/05(水) 03:13:39.75ID:???0213nobodyさん
2014/03/05(水) 07:19:15.16ID:???手元で書いて動くコードは1分でできるのに、
例外処理をして9割の完成度に上げるのには、とてつもなく時間がかかる場合がある
http://el.jibun.atmarkit.co.jp/rails/2011/09/web9-1e8b.html
スタートアップ企業で8年間Webの開発をしてみての反省点いろいろ - Masatomo Nakano Blog
6. サーバ周りの人材をしっかり確保しよう
http://b.hatena.ne.jp/entry/blog.madoro.org/mn/84
Ruby on Rails が簡単というのはウソ - #生存戦略 、それは - subtech
http://subtech.g.hatena.ne.jp/secondlife/20120309/1331279496
今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 | つい全力ツッコミしてしまうエンジニアCEOのブログ | sumyapp
http://b.hatena.ne.jp/entry/blog.sumyapp.com/2013/07/no-recommend-rails/
0214nobodyさん
2014/03/05(水) 11:34:41.73ID:???普通は他のプロセスが利用しようとしたら手放すよ
RubyはGCに問題が多々あるといわれるから、そこじゃねか
0215nobodyさん
2014/03/05(水) 23:11:59.25ID:???C言語のfree()とかってOSレベルではメモリ解放してるわけじゃないのかな
0216nobodyさん
2014/03/05(水) 23:41:07.71ID:???巨大メモリを使わないようにするか、fork するなどして別プロセスで動かすようにするかのどっちか
0217nobodyさん
2014/03/05(水) 23:44:19.51ID:???常駐の体を成してないよねそれ
0218nobodyさん
2014/03/05(水) 23:45:29.65ID:???すげー興味でてきた
0219nobodyさん
2014/03/05(水) 23:47:43.77ID:???使わなくなったメモリを再利用すれば多くの場合は問題ない
巨大な文字列などは連続した領域が必要なので再利用できない場合がある
チビチビ使う方が再利用しやすい
0220nobodyさん
2014/03/05(水) 23:51:55.94ID:???フラグメンテーションとかそういう話だっけw
文系出身な俺には重いな
0221nobodyさん
2014/03/05(水) 23:55:29.43ID:???そうそう
RubyのGCはメモリコンパクション(デフラグメンテーション)をやらないので、今回ような使い方をすれば問題になる可能性がある
0222nobodyさん
2014/03/06(木) 01:11:41.99ID:???Rubyが採用してるGCのスタイルがコンパクションと相性悪いとか何とか
0223nobodyさん
2014/03/06(木) 10:57:14.72ID:???0224nobodyさん
2014/03/06(木) 15:47:34.23ID:???0225nobodyさん
2014/03/08(土) 01:09:20.34ID:???http://itpro.nikkeibp.co.jp/article/Interview/20131022/512834/
マカフィー株式会社 | McAfee Blog -高度なマルウェアに関する神話 第1話: 『課題は、高度なマルウェアは検知できないということだ』
http://www.mcafee.com/japan/security/mcafee_labs/blog/content.asp?id=1379
New York Timesの記事によれば、同紙は米Symantecのウイルス対策製品を使っていたが、
Mandiantが調べた結果、攻撃者が使った45種類のカスタム版マルウェアのうち、Symantecの製品で検出できたのは1種類のみだったという。
http://bylines.news.yahoo.co.jp/yamamotoichiro/20130204-00023332/
ソニーPSNの個人情報漏洩に英国で約3500万円の罰金支払い命令、「防げた事件」と判定 - Engadget Japanese
http://japanese.engadget.com/2013/01/24/psn-3500/
Adobeにサイバー攻撃、顧客情報290万人分抜き取り、製品のソースコードも -INTERNET Watch
http://internet.watch.impress.co.jp/docs/news/20131004_618168.html
0226nobodyさん
2014/03/09(日) 01:42:11.20ID:givZU1Ab$.get("api/action", {}, function(data) {
$("bar"),append ($(data));
});
def action
render :partial=>"foo"
end
とか書いていたら、dataには改行コードしかありませんでした
コンソール見たら、actionは呼び出されており、指定したパーシャルがrenderされていることは確認できたのですが・・・
0227あ
2014/03/09(日) 02:05:33.45ID:???http://b.hatena.ne.jp/entry/d.hatena.ne.jp/yuum3/20120903/1346653974
0228nobodyさん
2014/03/09(日) 19:10:25.85ID:???get 'articles/edit'
post 'articles/preview'
post 'articles/post'
class ArticlesController < ApplicationController
def edit
end
def preview
end
def post
end
end
こんな感じで、編集画面でフォーム送信 → プレビュー → プレビューで確認して投稿 というのを考えてましたが、
edit → preview でfile_fieldの値が引き継がれません。
file_fieldの値を別の画面に引き継ぐことは無理なのでしょうか?
0229nobodyさん
2014/03/09(日) 19:20:09.30ID:???0231nobodyさん
2014/03/09(日) 21:40:32.82ID:???すいません
他にどの辺りのソースも書けばいいでしょうか・・・
>>230
無理なんですか・・・
ユーザがアップロードした画像をメモリの中におさめて別の画面の<input type="file">にセットするとかはできないんですね・・・
0233nobodyさん
2014/03/09(日) 23:24:37.25ID:rV1atWDh投稿に確定フラグを用意して、
確認画面に行くときに確定フラグOFFで保存(画像も)してしまい、
確認取れたら確定フラグをONにする。
別途、長時間(1時間とか1日とか)確定フラグOFFのままのものは、バッチで削除する。
とした。
面倒だし、未確定のものが見えてしまうことを避けるためにscopeの設定に注意、
という残念なアプローチなので、あまりお勧めはしない。
0236nobodyさん
2014/03/09(日) 23:36:35.19ID:???>>233 で分からないようならかなり勉強が足りない
Railsは広範な知識が前提になるから、君にはまだ早いかもしれない
■ このスレッドは過去ログ倉庫に格納されています