作っているサービスが日本のみなので、アプリケーション全体の日本語化を企んだ時のメモです。 Rails の I18n を使って日本語化しました。 localeの言語設定変更 config/application.rb を下記に変更する デフォルトだと、:de でコメントアウトされているので、:jaに変更してアンコメント 辞書ファイルダウンロード I18n の辞書ファイルを一から全て書き出すと大量になってしまうので、 テンプレートを GitHub から下記コマンドでダウンロードして、プロジェクトのファイルを上書きしておく 辞書ファイル置き場は config/locales/ プロジェクトのトップで下記コマンドを実行
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 2021.2.11追記:DateTimeクラスは非推奨なクラスになりました DateTimeクラスは非推奨なクラスとなり、DateTimeクラスではなくTimeクラスを使うよう、公式にアナウンスされました。 参考1 But we consider use of DateTime should be discouraged. - matz (Yukihiro Matsumoto) https://bugs.ruby-lang.org/issues/15712#note-4 参考2 DateTime は deprecated とされているた
以下は必須となります。 gem 'therubyracer', platforms: :ruby(有効化) gem 'less-rails' (追記) gem 'twitter-bootstrap-rails'(追記) source 'https://rubygems.org' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.1.7' # Use sqlite3 as the database for Active Record gem 'sqlite3' # Use SCSS for stylesheets gem 'sass-rails', '~> 4.0.0' # Use Uglifier as compressor for JavaScript assets gem 'u
Google+ボタン はてなブックマークボタン 更新日時: 2015年01月07日(水) 作成日時: 2013年03月05日(火) 前の記事 / 次の記事 Rails4ではデフォルトでturbolinksが導入されるようなので、 どんなものかいじってみたら、なかなかエキサイティングだったけど、 他のJavaScriptと共存させようとすると結構デリケートだったので、それをまとめたメモ。 ※ v2.1.0未満のturbolinksでfirefox26以降で正常に動作しなくなる不具合あり。 ※ v2.2.1未満のturbolinksでfirefox27以降で正常に動作しなくなる不具合あり。 bundle update turbolinks 目次 この記事で言及する各ライブラリの場所 turbolinksとは何なのか? 何が問題になるのか? window.onload()が発火しない問題の解決
Rails 4のturbolinksについて最低でも知っておきたい事 (追記)turbolinksに関するセキュリティ上の懸念について turbolinksとは、ページ遷移をAjaxに置き換え、JavaScriptやCSSのパースを省略することで高速化するgemで、Rails 4からはデフォルトで使用されるようになります。 高速化は大歓迎なのですが、JavaScriptのイベントの起き方が変わるため、Rails 3までの書き方をしているとまず間違いなく問題が起きます。しかも、Rails 4ではデフォルトの機能ですので、最新版を使いたいなら必ず知っておかなければいけません。 本エントリではturbolinksを使うために絶対に知らなければいけないことを分かりやすく紹介したいと思います。 動作 turbolinksの動作は、すごく大雑把に言うと以下の通りです。 リンクのclickイベントをフッ
fetchReplacement失敗時は再度レンダリングされ, landingの状態になる。 よく出てくるおまじない $(document).on 'ready page:load', -> これはjqueryが提供する'ready'とTurbolinksが提供する'page:load'の両方で定義すること。 非Turbolinks遷移時は'ready'で発火。 Turbolinks遷移時は'page:load'で発火の両方をカバーするという意味。 Turbolinksをサポートしていないブラウザでも'ready'が発火するので安心。 jquery-turbolinks gem 'ready'triggerにpage:loadを追加してくれる機能を提供。 Trigger tips 通常、page:changeでaddEventListenerしてはいけない。 fetchHistoryの際に
ActiveRecordは基本ずっと接続をはりっぱなしにします。 なので長時間接続をはりっぱなしにするため タイムアウト等で接続がきれると問題がでます。 MySQLでDBの接続がきれるタイミング 状況別 Railsの場合 HTTPリクエストのあるたびに接続が切れてないかを確認します。切れてる場合は再接続するようになっているので問題なさそうです。 バッチ、デーモン等 ActiveRecordを使った場合はずっとつなぎっぱなしになるため、途中で接続が切れるとエラーになります。 reconnectオプションは危険 じゃあバッチ等の場合自動で再接続してくれればと思うと MySqlのクライアントライブラリレベルでリコネクトの概念がありました。 railsで使うにはdatabase.ymlに:reconnect = trueで指定できます。 が!! railsの実装ではデフォルトはOFFになっています
Resque is returning Mysql2::Error: closed MySQL connection: SHOW FIELDS FROM users Worker 8608f362-819b-4c15-b42b-69c4df00d27b:1 on low at about 16 hours ago Class AddLiveView Arguments 4383 {"remote_ip"=>"184.72.47.71", "expires"=>true} Exception ActiveRecord::StatementInvalid Error Mysql2::Error: closed MySQL connection: SHOW FIELDS FROM `users` /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.
表題の通り Rails 3.2.X 系の request.remote_ip に入っている値について調べました。 最初に結論 リクエストヘッダを読み HTTP_CLIENT_IP, HTTP_X_FORWARDED_FOR, REMOTE_ADDR の順にセットされていた値を取得してきます。 ソースコード http://api.rubyonrails.org/classes/ActionDispatch/RemoteIp/GetIp.html 上記 API にも記載されていますが calculate_ip が該当のメソッドです。 # File actionpack/lib/action_dispatch/middleware/remote_ip.rb, line 47 def calculate_ip client_ip = @env['HTTP_CLIENT_IP'] forwarded
『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0064 号 バックナンバー Rubyist Magazine 0064 号 Rubyist Magazine 0063 号 Rubyist Magazine 0062 号 Kaigi on Rails 特集号 RubyKaigi Takeout 2020 特集号 Rubyist Magazine 0061 号 Rubyist Magazine 0060 号 RubyKaigi 2019 直前特集号 Rubyist
Introducing Unicorn If you are a Rails developer, you’ve probably heard of Unicorn, a HTTP server that can handle multiple requests concurrently. Unicorn uses forked processes to achieve concurrency. Since forked processes are essentially copies of each other, this means that the Rails application need not be thread safe. This is great because it is difficult to ensure that our own code is thread
Help us understand the problem. What is going on with this article? Rails3.2からRails4.2に上げたらActiveRecordが遅くなったので、どうやって調査して、どのように対処したかを語ってみたい。 とても長いので、ダルい人は最初と最後だけ読めばよいです。 TL;DR 環境: Ruby 2.1.5 ARオブジェクトを大量に(ざっくり750kくらい)loadするバッチ処理 3.2系での実行時間は約480sec、 4.2系では約2900sec 約6倍の性能劣化 原因: preloadで性能劣化してた CollectionProxyの生成周りで遅くなってた Rails4からARオブジェクトの1attribute毎にObject生成するので遅い GCの時間も増えた 調査方法: Githubのcommit、Issueを
てめえらのRailsはオブジェクト指向じゃねえ!まずはCallbackクラス、Validatorクラスを活用しろ!RubyRails ちょっと煽り気味のタイトルにしてみましたが、Railsで開発する時は意識的にOOPに寄せないとオブジェクトの力が活かせなくなるよってことと、Railsが提供しているクラスの責務を分割することを支援してくれる機能について話をします。 ActiveRecordの性質 Rails開発においては、モデル層にロジックを書いてコントローラーは薄くしろ、というのはしつこく言われているので、概ね浸透してきていると思います。 それに加えて、最近私が結構しつこく主張しておきたいのが、モデル = ActiveRecordでは無いよ、ということです。 ActiveRecordは成り立ちから言うと、ロジックとDBへの永続化をまとめてカプセル化するアーキテクチャパターンから来ています。
ActiveRecordは必要になるまでDB読み込みをしません。 なのでやたら複雑なビューの中でクエリを弄ったり、コントローラーが肥大化してる状態でひどいSQLがログに流れてくると、パっと見ではどこが原因なのかすぐに分からない。 なので、SQLが実行された時にそれが実際にトリガーされたソースコードの位置も一緒にログに吐いてくれるgemを作りました。 bulletで分からないような、ビューのループの中で直接モデル読んでるみたいなヤバイ箇所を速やかに見つけるためのものです。 joker1007/activerecord-cause 仕組み的にはActiveRecordのロギングの仕組みを丸パクリしてcaller_locationsを足した感じ。 全ての読み込み位置を表示するわけではなく正規表現でマッチするパスを持ったソースコードの位置のみをログに記録します。 Railsで利用する場合は自動的に
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く