Rails/Tips
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(Rails/Tips);
*目次 [#mcf1ff40]
#contents
*関連ページ [#xe9cf991]
-[[Rails]]
*参考情報 [#fd128caa]
*一般 [#s8c8eeb0]
**Railsのlibファイルの自動読み込みの設定 [#o31dbfaf]
-lib以下のファイルはapplication.rbで以下のように追加し、l...
#pre{{
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
}}
-規約に関しては以下のリンクが参考になる。
--[[Rails の自動読み込みの話 - そんなこと覚えてない:http:...
--[[Auto-loading lib files in Rails 4 - Stack Overflow:ht...
-ただし、クラス名やモジュール名を明示的に参照しないと発生...
#pre{{
Hoge -> 'hoge.rb' を読み込む
Hoge::Mogu -> 'hoge/mogu.rb' を読み込む
HogeMogu -> 'hoge_mogu.rb' を読み込む
}}
**開発環境で広告を表示しない [#k25cd98d]
-[[ruby on rails - Hide Adsense on localhost - Stack Over...
**ExecJSをインストールしたくない [#dd3e87c8]
-[[Railsを動かすproduction環境にJavaScriptエンジンを入れ...
rake assets:precompile
**turbolinksを無効化する [#n1d7bbd1]
-[[Ruby - Rails 4 で turbolinks をオフにする方法 - Qiita:...
-Gemfileから削除
-application.html.erb から turbolinks を削除。「"data-tur...
#pre{{
<%= stylesheet_link_tag "application", media: "all",...
<%= javascript_include_tag "application", "data-turboli...
}}
-これに
#pre{{
<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "application" %>
}}
-application.jsからturbolinksを削除
#pre{{
//= require jquery
//= require jquery_ujs
//= require turbolinks <- 削除
//= require_tree .
}}
**jquery pluginを追加する [#ebb2d28c]
-gemファイルとなっているもの(〜-rails的なもの)はそのままG...
-そうでないものはassets/javascripts以下にファイルを設置し...
**モデルやコントローラーからActionView::Helpers::TextHelp...
-[[Railsでview以外、Controller内でhelperを使えるようにす...
-使いたいクラス内でincludeする。
include ActionView::Helpers::TextHelper
**Rails/Rubyのバージョンを表示する [#c2be9793]
-Railsのバージョンは、Rails.versionを使う。[[Print Rails ...
<%= 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は適当に。
**IDにドットを含めることができない [#fc1714dd]
-[[ruby on rails - Why do routes with a dot in a paramete...
-ブログのようにslugを指定してそれをIDとして利用している場...
**IDのかわりに任意の文字列を使用する [#x20026ef]
-通常状態では"/users/1"のようにIDがパスに含まれる。
-IDをユーザー名に変更したい場合user.rbにto_paramを追加す...
#pre{{
class User < ActiveRecord::Base
def to_param
username
end
end
}}
*設定 [#t9020c9a]
**初期設定 [#p8692cd3]
-[[Railsの設定 | Rails日本語ドキュメント | Ruby STUDIO:ht...
--config/application.rb
--環境特有の設定ファイル(development.rb、production.rb)。
--initializers
-つまり「cofnig=」で各環境共通の設定を行いたい場合、appli...
#pre{{
config.time_zone = 'Tokyo'
config.active_record.default_timezone = :local
}}
**ちょっとした定数を保存したい [#g6e9ca54]
-[[ruby - Where to define Rails app's version number - St...
#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ごとに異なる設定値を保存する方法...
config.my_special_value = 'val'
-次のように参照するのが簡単か。
Rails.application.config.my_special_value
-method_missingで勝手に値が保存される。
**ちょっとした設定値をDBに保存したい [#ke4fd182]
***[[rails-settings-cached]] [#sc76e172]
**サブディレクトリでPHPアプリを動かしたい [#v65dfcb1]
-ルートがrailsだけど例えばWordPressとかWikiをサブディレク...
-Railsでどうにかするのではなく、連携しているApache側(Web...
-[[RailsとWordPressの共存するように変更してみた - masalib...
#pre{{
Alias /wiki /home/sora/www/wiki
<Directory /home/sora/www/wiki>
PassengerEnabled Off
AllowOverride All
</Directory>
}}
*ビュー [#jc904d18]
**link_toの引数展開 [#dc3b6946]
-[[Rails - link_to の引数と展開の違いまとめ - Qiita:http:...
**ツリービューを組み込む [#v389e135]
-Rails4の場合[[jsTree]]がいいかも。
*ログ [#fbdf2f39]
**assetログを抑制する [#w4c26cc8]
-[[RailsでjsやcssなどassetsファイルへのGETでログが見辛い...
*データ [#i336b693]
**ステージング環境の追加 [#o06f16e9]
※設定が煩雑になるのでステージング環境(staging.rb)は追加し...
-[[RailsのRAILS_ENVに自分の環境を追加する - Qiita:http://...
-[[Rails に新たな env を追加する方法 - Qiita:http://qiita...
-development / production / test以外のカスタム環境を追加...
-confg/environments/staging.rbを作成(通常production.rbを...
-config/database.ymlにstating環境用の設定を追加(通常produ...
-以下のコマンドを実行
#pre{{
$ bundle install
$ bundle exec rake db:migrate RAILS_ENV=staging
$ bundle exec rails s -e staging
}}
**ステージング環境を追加しない [#fc1c9f34]
-設定が煩雑になるのでステージング環境は追加しないほうが良...
-[[config/environments/staging.rb はアンチパターン! - Qi...
-[[Railsのenvでステージング用の値は増やせるがあんまり増や...
-[[Rails.env.md:https://gist.github.com/pocke/21a3ce8fbc1...
そのかわりに環境変数を使用する。
-パターン1: 環境変数フラグで切り分け。
#pre{{
if ENV[API_MOCKING_FLG] == 1
# APIのモック処理
else
# 通常のAPI処理
end
}}
-パターン2: 設定を外だし。
#pre{{
production:
adapter: mysql2
encoding: utf8
pool: 5
socket: /tmp/mysql.sock
database: <%= ENV['DATABASE_SCHEMA_NAME'] %>
host: <%= ENV['DATABASE_HOST'] %>
username: <%= ENV['DATABASE_USER_NAME'] %>
password: <%= ENV['DATABASE_PASSWORD'] %>
}}
**初期データ投入(seeds.rb) [#u599c907]
db:seedを使ってデータを投入できる。
-db/seeds.rbを編集する。
#pre{{
Book.create(title: "title1", author: 'author1', summary: ...
Book.create(title: "title2", author: 'author2', summary: ...
}}
-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=d...
bundle exec rake db:reset RAILS_ENV=development
-db:resetとdb:migrate:resetの違い。[[【Rails】db:reset と...
**サンプルデータの作成 [#oa5e3fe4]
-[[Ruby on Railsでサンプルデータを登録するRakeタスクの作...
**機密情報の保存 [#x0372579]
-データベースのパスワードやAPIのアクセスキーをどうやって...
--direnv: シェルで環境変数を切り替える方法。シェルを使わ...
--dotenv: 設定ファイルを別途準備しそれを読み込むRubyスク...
-結局どれも一長一短ある。公開リポジトリを使わず、リポジト...
終了行:
&tag(Rails/Tips);
*目次 [#mcf1ff40]
#contents
*関連ページ [#xe9cf991]
-[[Rails]]
*参考情報 [#fd128caa]
*一般 [#s8c8eeb0]
**Railsのlibファイルの自動読み込みの設定 [#o31dbfaf]
-lib以下のファイルはapplication.rbで以下のように追加し、l...
#pre{{
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
}}
-規約に関しては以下のリンクが参考になる。
--[[Rails の自動読み込みの話 - そんなこと覚えてない:http:...
--[[Auto-loading lib files in Rails 4 - Stack Overflow:ht...
-ただし、クラス名やモジュール名を明示的に参照しないと発生...
#pre{{
Hoge -> 'hoge.rb' を読み込む
Hoge::Mogu -> 'hoge/mogu.rb' を読み込む
HogeMogu -> 'hoge_mogu.rb' を読み込む
}}
**開発環境で広告を表示しない [#k25cd98d]
-[[ruby on rails - Hide Adsense on localhost - Stack Over...
**ExecJSをインストールしたくない [#dd3e87c8]
-[[Railsを動かすproduction環境にJavaScriptエンジンを入れ...
rake assets:precompile
**turbolinksを無効化する [#n1d7bbd1]
-[[Ruby - Rails 4 で turbolinks をオフにする方法 - Qiita:...
-Gemfileから削除
-application.html.erb から turbolinks を削除。「"data-tur...
#pre{{
<%= stylesheet_link_tag "application", media: "all",...
<%= javascript_include_tag "application", "data-turboli...
}}
-これに
#pre{{
<%= stylesheet_link_tag "application", media: "all" %>
<%= javascript_include_tag "application" %>
}}
-application.jsからturbolinksを削除
#pre{{
//= require jquery
//= require jquery_ujs
//= require turbolinks <- 削除
//= require_tree .
}}
**jquery pluginを追加する [#ebb2d28c]
-gemファイルとなっているもの(〜-rails的なもの)はそのままG...
-そうでないものはassets/javascripts以下にファイルを設置し...
**モデルやコントローラーからActionView::Helpers::TextHelp...
-[[Railsでview以外、Controller内でhelperを使えるようにす...
-使いたいクラス内でincludeする。
include ActionView::Helpers::TextHelper
**Rails/Rubyのバージョンを表示する [#c2be9793]
-Railsのバージョンは、Rails.versionを使う。[[Print Rails ...
<%= 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は適当に。
**IDにドットを含めることができない [#fc1714dd]
-[[ruby on rails - Why do routes with a dot in a paramete...
-ブログのようにslugを指定してそれをIDとして利用している場...
**IDのかわりに任意の文字列を使用する [#x20026ef]
-通常状態では"/users/1"のようにIDがパスに含まれる。
-IDをユーザー名に変更したい場合user.rbにto_paramを追加す...
#pre{{
class User < ActiveRecord::Base
def to_param
username
end
end
}}
*設定 [#t9020c9a]
**初期設定 [#p8692cd3]
-[[Railsの設定 | Rails日本語ドキュメント | Ruby STUDIO:ht...
--config/application.rb
--環境特有の設定ファイル(development.rb、production.rb)。
--initializers
-つまり「cofnig=」で各環境共通の設定を行いたい場合、appli...
#pre{{
config.time_zone = 'Tokyo'
config.active_record.default_timezone = :local
}}
**ちょっとした定数を保存したい [#g6e9ca54]
-[[ruby - Where to define Rails app's version number - St...
#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ごとに異なる設定値を保存する方法...
config.my_special_value = 'val'
-次のように参照するのが簡単か。
Rails.application.config.my_special_value
-method_missingで勝手に値が保存される。
**ちょっとした設定値をDBに保存したい [#ke4fd182]
***[[rails-settings-cached]] [#sc76e172]
**サブディレクトリでPHPアプリを動かしたい [#v65dfcb1]
-ルートがrailsだけど例えばWordPressとかWikiをサブディレク...
-Railsでどうにかするのではなく、連携しているApache側(Web...
-[[RailsとWordPressの共存するように変更してみた - masalib...
#pre{{
Alias /wiki /home/sora/www/wiki
<Directory /home/sora/www/wiki>
PassengerEnabled Off
AllowOverride All
</Directory>
}}
*ビュー [#jc904d18]
**link_toの引数展開 [#dc3b6946]
-[[Rails - link_to の引数と展開の違いまとめ - Qiita:http:...
**ツリービューを組み込む [#v389e135]
-Rails4の場合[[jsTree]]がいいかも。
*ログ [#fbdf2f39]
**assetログを抑制する [#w4c26cc8]
-[[RailsでjsやcssなどassetsファイルへのGETでログが見辛い...
*データ [#i336b693]
**ステージング環境の追加 [#o06f16e9]
※設定が煩雑になるのでステージング環境(staging.rb)は追加し...
-[[RailsのRAILS_ENVに自分の環境を追加する - Qiita:http://...
-[[Rails に新たな env を追加する方法 - Qiita:http://qiita...
-development / production / test以外のカスタム環境を追加...
-confg/environments/staging.rbを作成(通常production.rbを...
-config/database.ymlにstating環境用の設定を追加(通常produ...
-以下のコマンドを実行
#pre{{
$ bundle install
$ bundle exec rake db:migrate RAILS_ENV=staging
$ bundle exec rails s -e staging
}}
**ステージング環境を追加しない [#fc1c9f34]
-設定が煩雑になるのでステージング環境は追加しないほうが良...
-[[config/environments/staging.rb はアンチパターン! - Qi...
-[[Railsのenvでステージング用の値は増やせるがあんまり増や...
-[[Rails.env.md:https://gist.github.com/pocke/21a3ce8fbc1...
そのかわりに環境変数を使用する。
-パターン1: 環境変数フラグで切り分け。
#pre{{
if ENV[API_MOCKING_FLG] == 1
# APIのモック処理
else
# 通常のAPI処理
end
}}
-パターン2: 設定を外だし。
#pre{{
production:
adapter: mysql2
encoding: utf8
pool: 5
socket: /tmp/mysql.sock
database: <%= ENV['DATABASE_SCHEMA_NAME'] %>
host: <%= ENV['DATABASE_HOST'] %>
username: <%= ENV['DATABASE_USER_NAME'] %>
password: <%= ENV['DATABASE_PASSWORD'] %>
}}
**初期データ投入(seeds.rb) [#u599c907]
db:seedを使ってデータを投入できる。
-db/seeds.rbを編集する。
#pre{{
Book.create(title: "title1", author: 'author1', summary: ...
Book.create(title: "title2", author: 'author2', summary: ...
}}
-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=d...
bundle exec rake db:reset RAILS_ENV=development
-db:resetとdb:migrate:resetの違い。[[【Rails】db:reset と...
**サンプルデータの作成 [#oa5e3fe4]
-[[Ruby on Railsでサンプルデータを登録するRakeタスクの作...
**機密情報の保存 [#x0372579]
-データベースのパスワードやAPIのアクセスキーをどうやって...
--direnv: シェルで環境変数を切り替える方法。シェルを使わ...
--dotenv: 設定ファイルを別途準備しそれを読み込むRubyスク...
-結局どれも一長一短ある。公開リポジトリを使わず、リポジト...
ページ名: