users_url
とかがメール内でも使える。
class ApplicationMailer < ActionMailer::Base
include Rails.application.routes.url_helpers
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
では動きません。
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_holmes
とrugged
がインストールできません。
cmakeが必要なのでcmakeを入れてくれるbuildpackを入れます。
$ heroku buildpacks:add --index 1 https://github.com/rcaught/heroku-buildpack-cmake
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が使えるならいろいろやりやすそうです。
404などのページをassets pipelineを使って作れるgakubuchi gemを使っています。
capistranoでデプロイする時、これのassets:precompileで落ちてデプロイできてないことがよくある。(落ちないこともある)
もう一度デプロイすると動くので騙し騙し使っている。デバッグしないとなあ・・・。
Tasks: TOP => deploy:assets:precompile
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as root@app1.kowabana.jp: rake exit status: 1
rake stdout: I, [2016-09-16T10:01:36.563918 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/blocks-25f0ada07701275b817165481ea227bf448e4b33b160e18e4e4e5ff988e4ec06.css
I, [2016-09-16T10:01:36.565468 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/blocks-25f0ada07701275b817165481ea227bf448e4b33b160e18e4e4e5ff988e4ec06.css.gz
I, [2016-09-16T10:01:48.018613 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/application-ed4db3deeeed188beda19cdd3571fffe28eac2adfd49a4c948d14dee05076639.js
I, [2016-09-16T10:01:48.019534 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/application-ed4db3deeeed188beda19cdd3571fffe28eac2adfd49a4c948d14dee05076639.js.gz
I, [2016-09-16T10:01:56.640992 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/application-36e5ebe3ef6a536d04cf635d1343bbfb50cd9c2de9b70bec0d72b0469565bf1c.css
I, [2016-09-16T10:01:56.641414 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/application-36e5ebe3ef6a536d04cf635d1343bbfb50cd9c2de9b70bec0d72b0469565bf1c.css.gz
I, [2016-09-16T10:01:56.804354 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/404-f5b8eac98ade00d0f719281af5b7b9103e7403700bda2ea175fefb8fff1ccfc5.html
I, [2016-09-16T10:01:56.805071 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/404-f5b8eac98ade00d0f719281af5b7b9103e7403700bda2ea175fefb8fff1ccfc5.html.gz
I, [2016-09-16T10:01:56.848952 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/406-67bca5a0e35c21ad811db2b88cca0ea5537cf59d85269977c274cb94dee913aa.html
I, [2016-09-16T10:01:56.849368 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/406-67bca5a0e35c21ad811db2b88cca0ea5537cf59d85269977c274cb94dee913aa.html.gz
I, [2016-09-16T10:01:56.905607 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/422-ef00dd8611c3e3d04be35eb07806ac98bad01d2e91f1777e01f7bbc340849e49.html
I, [2016-09-16T10:01:56.906426 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/422-ef00dd8611c3e3d04be35eb07806ac98bad01d2e91f1777e01f7bbc340849e49.html.gz
I, [2016-09-16T10:01:56.962076 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/500-cf3665c336cdd9870de6ce60459b74d0d4280ac369f48ef590922fbac639673e.html
I, [2016-09-16T10:01:56.962528 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/500-cf3665c336cdd9870de6ce60459b74d0d4280ac369f48ef590922fbac639673e.html.gz
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - /srv/kowabana.jp/releases/20160916010102/public/assets/406-1a8f57ba17cdbf23ab495f461eea0f1e844b30e0789aab4c933385017f437c27.html
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/fileutils.rb:8:in `copy_p'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/task.rb:15:in `block in execute!'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/task.rb:10:in `each'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/task.rb:10:in `execute!'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/tasks/after_precompile.rake:3:in `block in <top (required)>'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/rake-11.2.2/exe/rake:27:in `<top (required)>'
/usr/local/rbenv/versions/2.3.1/bin/bundle:23:in `load'
/usr/local/rbenv/versions/2.3.1/bin/bundle:23:in `<main>'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
rake stderr: Nothing written
** DEPLOY FAILED
** Refer to log/capistrano.log for details. Here are the last 20 lines:
DEBUG [3390349e] I, [2016-09-16T10:01:56.905607 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/422-ef00dd8611c3e3d04be35eb07806ac98bad01d2e91f1777e01f7bbc340849e49.html
DEBUG [3390349e]
DEBUG [3390349e] I, [2016-09-16T10:01:56.906426 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/422-ef00dd8611c3e3d04be35eb07806ac98bad01d2e91f1777e01f7bbc340849e49.html.gz
DEBUG [3390349e]
DEBUG [3390349e] I, [2016-09-16T10:01:56.962076 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/500-cf3665c336cdd9870de6ce60459b74d0d4280ac369f48ef590922fbac639673e.html
DEBUG [3390349e]
DEBUG [3390349e] I, [2016-09-16T10:01:56.962528 #30643] INFO -- : Writing /srv/kowabana.jp/releases/20160916010102/public/assets/500-cf3665c336cdd9870de6ce60459b74d0d4280ac369f48ef590922fbac639673e.html.gz
DEBUG [3390349e]
DEBUG [3390349e] rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - /srv/kowabana.jp/releases/20160916010102/public/assets/406-1a8f57ba17cdbf23ab495f461eea0f1e844b30e0789aab4c933385017f437c27.html
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/fileutils.rb:8:in `copy_p'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/task.rb:15:in `block in execute!'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/task.rb:10:in `each'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/gakubuchi/task.rb:10:in `execute!'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/gakubuchi-1.2.2/lib/tasks/after_precompile.rake:3:in `block in <top (required)>'
/srv/kowabana.jp/shared/bundle/ruby/2.3.0/gems/rake-11.2.2/exe/rake:27:in `<top (required)>'
/usr/local/rbenv/versions/2.3.1/bin/bundle:23:in `load'
/usr/local/rbenv/versions/2.3.1/bin/bundle:23:in `<main>'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
herokuで普通にgit push heroku master
するとrails db:migrate
されません。
下記のbuildpackを使うとENVから指定したコマンドをデプロイ時に実行してくれるのでdb:migrate
できます。
gunpowderlabs/buildpack-ruby-rake-deploy-tasks: Run arbitrary rake tasks on deploy to Heroku
$ heroku buildpacks:set https://github.com/heroku/heroku-buildpack-ruby -a your-app-name
$ heroku buildpacks:add https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks -a your-app-name
$ heroku config:set DEPLOY_TASKS='db:migrate' -a your-app-name
Review AppsのAutomatic Deployをやってる時に便利。