RailsにGoogle Analyticsをいれてみた

Ruby on RailsにGoogle Analyticsのコードを入れてみました

Google Analyticsでアカウントをつくって、サイトを登録し
トラッキング コードを用意しておきます

slimを導入していたのでslimです

Railsの view/layouts/application.html.slim にいれることとして
まずpartialを準備

新しく作りました
$ vim view/shared/_google.html.slim

javascript:
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-xxxxxxxxx-x', 'auto');
  ga('send', 'pageview');

これをapplication.html.slimで読み込む
$ view/layouts/application.html.slim

doctype html
html
  head
    title
      | sample site
    = stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true
    = javascript_include_tag 'application', 'data-turbolinks-track' => true
    = csrf_meta_tags
  body
    #wrapper
      header#head
        = render 'layouts/header'
        = render 'layouts/navigation'
      = yield
      footer#foot
        = render 'layouts/footer'
        - if Rails.env == 'production'
          = render 'shared/googleanalytics'

↓を追記しました

        - if Rails.env == 'production'
          = render 'shared/google'

production環境だけ読み込むようにしました

Railsでrake db:seedをやり直す

Ruby on Railsでdb:seedをすると初期値がデータベースに保存されて便利ですが
初期値を変えてやり直したい..ので調べました

rake db:seed
を再度するとデータが重複してしまうようで
データベースを作りなおしてやることにしました
※初期値以外のデータが飛びます、それでもよければ

db/seed.rb
を書き換えて初期値を変えてやった後、

データベース作り直し
$ rake db:migrate:reset

これだと一旦データベースをDROPしてからmigrationもしてくれるようです
つまりは、初期値がないけど構造は最新になります

初期値をいれましょう
$ rake db:seed

これでできあがり

seed-fuをいれてやるともっとよくできそうです(試せてないです)
railsで初期データを入れる(seed-fuの使い方) – Qiita

RailsからActionMailerでGmailを利用してメールを送る

$ config/environments/develop.rb

Rails.application.configure do
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = { 
    address:               'smtp.gmail.com',
    port:                    587,
    domain:                'localhost:3000',
    user_name:             'ユーザー名',
    password:              'パスワード',
    authentication:        'plain',
    enable_starttls_auto:  true
  }
end

$ rails c

irb> ActionMailer::Base.mail(from: “sample@sample.com”, to: “sampleto@sample.com”, subject: “題名”, body: “本文”).deliver

でメール送信テストができます

Gmailだとエラーが
Net::SMTPAuthenticationError
が出るかと思います

この辺をみて
https://support.google.com/accounts/answer/6010255

この設定をOFFにすると
https://www.google.com/settings/security/lesssecureapps

できるようになります(セキュリティ的によくないけど)

2段階認証を設定して、アプリ用のパスワードを設定したほうがいいようです

rails db時にCouldn’t find database client: sqlite3.エラー

railsで遊んでいてデータベースを見ようとコマンド叩くとエラーがでました

$ rails db
Couldn’t find database client: sqlite3. Check your $PATH and try again.

あれ?と思ったけど、ふつうにsqlite3をインストールしてませんでした..
Ubuntuだったので

$ sudo apt-get intall sqlite3

で解決しました