&tag(Rails/Tips); *目次 [#mcf1ff40] #contents *関連ページ [#xe9cf991] -[[Rails]] *参考情報 [#fd128caa] *一般 [#s8c8eeb0] **Railsのlibファイルの自動読み込みの設定 [#o31dbfaf] -lib以下のファイルはapplication.rbで以下のように追加し、lib以下に規約に従ったrbファイルをつくる必要がある。 #pre{{ config.autoload_paths += %W(#{config.root}/lib) config.autoload_paths += Dir["#{config.root}/lib/**/"] }} -規約に関しては以下のリンクが参考になる。 --[[Rails の自動読み込みの話 - そんなこと覚えてない:http://blog.eiel.info/blog/2013/09/07/autoload-rails/]] --[[Auto-loading lib files in Rails 4 - Stack Overflow:http://stackoverflow.com/questions/19098663/auto-loading-lib-files-in-rails-4]] -ただし、クラス名やモジュール名を明示的に参照しないと発生しないので、rbファイルに定義されたメソッドをいきなり使おうとしてもだめかもしれない(既存クラスを拡張したい場合など)。 #pre{{ Hoge -> 'hoge.rb' を読み込む Hoge::Mogu -> 'hoge/mogu.rb' を読み込む HogeMogu -> 'hoge_mogu.rb' を読み込む }} **開発環境で広告を表示しない [#k25cd98d] -[[ruby on rails - Hide Adsense on localhost - Stack Overflow:http://stackoverflow.com/questions/1386195/hide-adsense-on-localhost]] **ExecJSをインストールしたくない [#dd3e87c8] -[[Railsを動かすproduction環境にJavaScriptエンジンを入れたくない - QA@IT:http://qa.atmarkit.co.jp/q/2123]]の下にある、precompileして送りこむのが簡単? rake assets:precompile **turbolinksを無効化する [#n1d7bbd1] -[[Ruby - Rails 4 で turbolinks をオフにする方法 - Qiita:http://qiita.com/kazz187/items/12737363d62b9c91993c]] -Gemfileから削除 -application.html.erb から turbolinks を削除。「"data-turbolinks-track" => true」を削除。 #pre{{ <%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %> <%= javascript_include_tag "application", "data-turbolinks-track" => true %> }} -これに #pre{{ <%= stylesheet_link_tag "application", media: "all" %> <%= javascript_include_tag "application" %> }} -application.jsからturbolinksを削除 #pre{{ //= require jquery //= require jquery_ujs //= require turbolinks <- 削除 //= require_tree . }} **モデルやコントローラーからActionView::Helpers::TextHelperに登録されているメソッドを呼び出す [#f77e9293] -[[Railsでview以外、Controller内でhelperを使えるようにする - satoko's blog - s21g:http://blog.s21g.com/articles/682]]より、 -使いたいクラス内でincludeする。 include ActionView::Helpers::TextHelper **Rails/Rubyのバージョンを表示する [#c2be9793] -Railsのバージョンは、Rails.versionを使う。[[Print Rails version in views? - Stack Overflow:http://stackoverflow.com/questions/8682378/print-rails-version-in-views]] <%= Rails.version %> -RubyのバージョンはRUBY_VERSIONを使う <%= RUBY_VERSION %> **トップページを作成する [#ede7242a] -普通にcontrollerとviewを作成すれば良い。 -routes.rbでルートを設定。 #pre{{ # You can have the root of your site routed with "root" root 'welcome#index' }} -welcome_controller.rbを作成 #pre{{ class WelcomeController < ApplicationController def index end end }} -welcome/index.html.erbは適当に。 *設定 [#t9020c9a] **ちょっとした定数を保存したい [#g6e9ca54] -[[ruby - Where to define Rails app's version number - Stack Overflow:http://stackoverflow.com/questions/11199553/where-to-define-rails-apps-version-number]]によると、config/initializers/version.rbに以下のファイルを作成する。 #pre{{ module MySite class Application VERSION = "0.0.4" end end }} -別にファイルを分けなくてもapplication.rbに直接書いてもいいかも? #pre{{ module MySite class Application < Rails::Application VERSION = "1.1.0" end end }} **ちょっとした設定値を保存したい [#wef17e2e] -development / productionごとに異なる設定値を保存する方法。[[ruby - Where can I store site-wide variables in Rails 4? - Stack Overflow:http://stackoverflow.com/questions/20857886/where-can-i-store-site-wide-variables-in-rails-4]]にあるように、development.rbで以下のように定義し、 config.my_special_value = 'val' -次のように参照するのが簡単か。 Rails.application.config.my_special_value -method_missingで勝手に値が保存される。 **ちょっとした設定値をDBに保存したい [#ke4fd182] ***[[rails-settings-cached]] [#sc76e172] *ビュー [#jc904d18] **link_toの引数展開 [#dc3b6946] -[[Rails - link_to の引数と展開の違いまとめ - Qiita:http://qiita.com/somewhatgood@github/items/9890e75b4c195d47715a]] **ツリービューを組み込む [#v389e135] -Rails4の場合[[jsTree]]がいいかも。 *ログ [#fbdf2f39] **assetログを抑制する [#w4c26cc8] -[[RailsでjsやcssなどassetsファイルへのGETでログが見辛い場合の対処法 - Qiita:http://qiita.com/marqs/items/70588084a87fd0cb164e]] *データ [#i336b693] **環境の追加 [#o06f16e9] -[[RailsのRAILS_ENVに自分の環境を追加する - Qiita:http://qiita.com/t_oginogin/items/181a45bfb17fede1655d]] -development / production / test以外のカスタム環境を追加する。例えばstaging環境を追加する場合。 -confg/environments/staging.rbを作成。 -config/database.ymlにstating環境用の設定を追加。 -以下のコマンドを実行 #pre{{ $ bundle install $ bundle exec rake db:migrate RAILS_ENV=staging $ bundle exec rails s -e staging }} **初期データ投入(seeds.rb) [#u599c907] db:seedを使ってデータを投入できる。 -db/seeds.rbを編集する。 #pre{{ Book.create(title: "title1", author: 'author1', summary: 'summary1') Book.create(title: "title2", author: 'author2', summary: 'summary2') }} -rake db:seedを実行する。 bundle exec rake db:seed RAILS_ENV=development -再投入の場合は rake db:resetだけで良い。db:seedもまとめてやってくれる。 bundle exec rake db:reset RAILS_ENV=development **データベースのリセット/データの再投入 [#z713e7c0] -db:resetがお手軽(db:reset = db:drop db:setup、db:setup=db:create db:schema:load db:seed)。[[Rails - データベースリセット - Qiita:http://qiita.com/m_ryou/items/3a0ca3d83fa4b329b979]] bundle exec rake db:reset RAILS_ENV=development **サンプルデータの作成 [#oa5e3fe4] -[[Ruby on Railsでサンプルデータを登録するRakeタスクの作成方法 - ztbuz@dev:http://ztbuz.hateblo.jp/entry/2013/12/31/214628]]にあるようにrakeタスクを作成しそこからデータを登録する。 **機密情報の保存 [#x0372579] -データベースのパスワードやAPIのアクセスキーをどうやって保存するかという問題。以下の方法がある。 --direnv: シェルで環境変数を切り替える方法。シェルを使わないIDEだと使えない? --dotenv: 設定ファイルを別途準備しそれを読み込むRubyスクリプト。本番環境で使わないほうがいいという話もある。[[Dotenvはproductionで使わないほうがよいのではという話 - なんかかきたい:http://t-cyrill.hatenablog.jp/entry/2015/03/25/024625]] -結局どれも一長一短ある。公開リポジトリを使わず、リポジトリの安全性が担保されているなら、パスワード毎コミットしてしまうのが一番簡単かも。