Tag: Rails/Tips

目次

関連ページ

参考情報

一般

Railsのlibファイルの自動読み込みの設定

  • lib以下のファイルはapplication.rbで以下のように追加し、lib以下に規約に従ったrbファイルをつくる必要がある。
    config.autoload_paths += %W(#{config.root}/lib)
    config.autoload_paths += Dir["#{config.root}/lib/**/"]
    
  • 規約に関しては以下のリンクが参考になる。
  • ただし、クラス名やモジュール名を明示的に参照しないと発生しないので、rbファイルに定義されたメソッドをいきなり使おうとしてもだめかもしれない(既存クラスを拡張したい場合など)。
    Hoge       -> 'hoge.rb' を読み込む
    Hoge::Mogu -> 'hoge/mogu.rb' を読み込む
    HogeMogu   -> 'hoge_mogu.rb' を読み込む
    

開発環境で広告を表示しない

ExecJSをインストールしたくない

turbolinksを無効化する

  • Ruby - Rails 4 で turbolinks をオフにする方法 - Qiita
  • Gemfileから削除
  • application.html.erb から turbolinks を削除。「"data-turbolinks-track" => true」を削除。
      <%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
      <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
    
  • これに
      <%= stylesheet_link_tag    "application", media: "all" %>
      <%= javascript_include_tag "application" %>
    
  • application.jsからturbolinksを削除
    //= require jquery
    //= require jquery_ujs
    //= require turbolinks <- 削除
    //= require_tree .
    

jquery pluginを追加する

  • gemファイルとなっているもの(〜-rails的なもの)はそのままGemfileとして追加できる。
  • そうでないものはassets/javascripts以下にファイルを設置し、appliction.jsで読み込ませる

モデルやコントローラーからActionView::Helpers::TextHelperに登録されているメソッドを呼び出す

Rails/Rubyのバージョンを表示する

トップページを作成する

  • 普通にcontrollerとviewを作成すれば良い。
  • routes.rbでルートを設定。
      # You can have the root of your site routed with "root"
      root 'welcome#index'
    
  • welcome_controller.rbを作成
    class WelcomeController < ApplicationController
      def index
    
      end
    end
    
  • welcome/index.html.erbは適当に。

IDにドットを含めることができない

  • ruby on rails - Why do routes with a dot in a parameter fail to match? - Stack Overflowにあるように、デフォルトではIDにドットを含む文字列を指定することはできない。
  • ブログのようにslugを指定してそれをIDとして利用している場合、slug入力時にドットが含まれているかどうかのチェックが必要。それかIDの正規表現を指定してドットを入れられるようにするか。

IDのかわりに任意の文字列を使用する

  • 通常状態では"/users/1"のようにIDがパスに含まれる。
  • IDをユーザー名に変更したい場合user.rbにto_paramを追加する。
    class User < ActiveRecord::Base
      def to_param
        username
      end
    end
    

設定

ちょっとした定数を保存したい

  • ruby - Where to define Rails app's version number - Stack Overflowによると、config/initializers/version.rbに以下のファイルを作成する。
    module MySite
      class Application
        VERSION = "0.0.4"
      end
    end
    
  • 別にファイルを分けなくてもapplication.rbに直接書いてもいいかも?
    module MySite
      class Application < Rails::Application
        VERSION = "1.1.0"
      end
    end
    

ちょっとした設定値を保存したい

  • development / productionごとに異なる設定値を保存する方法。ruby - Where can I store site-wide variables in Rails 4? - Stack Overflowにあるように、development.rbで以下のように定義し、
    config.my_special_value = 'val'
  • 次のように参照するのが簡単か。
    Rails.application.config.my_special_value
  • method_missingで勝手に値が保存される。

ちょっとした設定値をDBに保存したい

rails-settings-cached

サブディレクトリでPHPアプリを動かしたい

  • ルートがrailsだけど例えばWordPressとかWikiをサブディレクトリで動かしたい場合。
  • Railsでどうにかするのではなく、連携しているApache側(Webサーバー側)で設定すれば良い)。
  • RailsとWordPressの共存するように変更してみた - masalibの日記が参考になる。PassengerRubyを設定しているVirtualHost設定の内部に以下のように追加する。
        Alias /wiki /home/sora/www/wiki
        <Directory /home/sora/www/wiki>
           	PassengerEnabled Off
            AllowOverride All
        </Directory>
    

ビュー

link_toの引数展開

ツリービューを組み込む

  • Rails4の場合jsTreeがいいかも。

ログ

assetログを抑制する

データ

ステージング環境の追加

  • RailsのRAILS_ENVに自分の環境を追加する - Qiita
  • Rails に新たな env を追加する方法 - Qiita
  • development / production / test以外のカスタム環境を追加する。例えばstaging環境を追加する場合。
  • confg/environments/staging.rbを作成(通常production.rbをコピーする)
  • config/database.ymlにstating環境用の設定を追加(通常production設定をstagingにコピーする)。config/secrets.ymlも同様。
  • 以下のコマンドを実行
    $ bundle install
    $ bundle exec rake db:migrate RAILS_ENV=staging
    $ bundle exec rails s -e staging
    

初期データ投入(seeds.rb)

db:seedを使ってデータを投入できる。

  • db/seeds.rbを編集する。
    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

データベースのリセット/データの再投入

サンプルデータの作成

機密情報の保存

  • データベースのパスワードやAPIのアクセスキーをどうやって保存するかという問題。以下の方法がある。
  • 結局どれも一長一短ある。公開リポジトリを使わず、リポジトリの安全性が担保されているなら、パスワード毎コミットしてしまうのが一番簡単かも。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-07-05 (木) 15:56:19