deviseのconfirmableモジュールを使うとデフォルトでemailを変更するときに再確認メールを送信する。

(これがサインアップ時のメールと同じ内容なので使い辛いというのは別の話)

設定でオフにできる。

config/initializers/devise.rb:

Devise.setup do |config|
  config.reconfirmable = false
end
class Comment < ApplicationRecord
  belongs_to :user
  belongs_to :post

  alias_method :sender, :user

  def reciever
    post.user
  end
end

こうしておくとメール送るときにわかりやすい。

if comment.sender != comment.reciever
  NoticeMailer.recieved_comment(@comment).deliver_later
end

users_urlとかがメール内でも使える。

class ApplicationMailer < ActionMailer::Base
  include Rails.application.routes.url_helpers
end

sprocketsやturbolinksを使っていて全css, jsを読み込んでるとしても何だかんだ言って今どのページにいるのか知りたい場合が多いです。

thoughtbotのflutieに始まり色んなところで勝手にcontroller名とaction名をつなげたものを使っていますがそれをベースに動く機能が必要になったので、つなげるルールを明確化するためにgemにしました。

komagata/view_id: Identifier your view from controller and action.

抽象的な名前を取りすぎな気がしますが、とりあえず・・・。

名前のつなげ方でうすが、controllerとactionを--でつなぎます。

ネームスペースは-でつなぎます。

PostsController#index => posts-index
DeletedPostsController#show => deleted_posts--show
Admin::DeletedPostsController#create => admin-deleted_posts--create

いつも使う処理なのでgemにしました。

fixed_footer-rails | RubyGems.org | your community gem host

使い方

Gemfileに書きを追加。

gem "fixed_footer-rails"
$ bundler install

application.jsに書きを追加。

//= require fixed-footer

jsから呼び出す。例えばfooter.coffeeを作って下記のように書く。

$(document).on "turbolinks:load", ->
  new FixedFooter("your-own-footer-id")

この設定をいつもやります。

class ApiController < ApplicationController
end

だとかっこ悪いので、

# config/initializers/inflections.rb:
ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.acronym "API"
end

こうする。

class APIController < ApplicationController
end

気持ちいい。デフォルトの大文字設定に欲しいな。

$ rails _4.2.7.1_ new foo

2016年12月26日現在、macOS Sierraでcapybara-webkitを動かすのは少し厄介です。

brew install qtとかbrew install qt5では動きません。

https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit#macos-sierra-1012

qtを本家からインストールし、PATHを通し、ソースを書き換える必要があります。

qt-opensource-mac-x64-clang-5.5.1.dmg

# ~/.zshrc
export PATH=~/Qt5.5.1/5.5/clang_64/bin:$PATH

~/Qt5.5.1/5.5/clang_64/mkspecs/features/mac/default_pre.prfの15行目の、

isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null"))): \

isEmpty($$list($$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null"))): \

に変える。

もうしばらくすればbrewで行けるようになるとは思いますが・・・。

僕が断念していたこの問題。

gakubuchi gemが落ちる - komagataのブログ

@tkawa さんのIssueきっかけに @_yasaichi さんが直してくださったそうです。

sprocketsなど追えてないのですが、ActionView::Base#asset_digest_pathに問題があったようです。

無事僕のcapistrano deployも落ちなくなったようです。ありがたい!

qiita-markdownを含んだGemfileをHerokuにpushするには - Qiita

こちら、HerokuのBuildpackの仕組みが環境変数ベースのものからちゃんとしたサブコマンドが用意されたのでそちらを使わないと動きません。

Buildpacks | Heroku Dev Center

素の状態だとqiita-markdownが依存してるcharlock_holmesruggedがインストールできません。

rugged

cmakeが必要なのでcmakeを入れてくれるbuildpackを入れます。

$ heroku buildpacks:add --index 1 https://github.com/rcaught/heroku-buildpack-cmake

charlock_holmes

libicuが必要なため、Aptfileに書いたライブラリをapt-getでインストールしてくれるbuildpackを使います。

$ vi Aptfile 
libicu52
libicu-dev
$ heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-apt
$ heroku buildpacks
1. https://github.com/heroku/heroku-buildpack-apt
2. https://github.com/rcaught/heroku-buildpack-cmake
3. heroku/ruby

aptが使えるならいろいろやりやすそうです。