だいぶ前に、マルチテナントの Rails アプリをテストするために Pow を導入した。
便利に使っていたけど、もう用済みになったのでアンインストール。
$ curl get.pow.cx/uninstall.sh | sh
Pow は Mac 以外で使えないのがもったいない。 Node ではなく Go で作られていたら Windows でも使えたりしたかもな。
Rails アプリ開発中、メール送信機能をテストするには Gmail の SMTP サーバーを使うのが手っ取り早い。
その際、ActionMailer の設定に Gmail のアカウントとパスワードを書く必要があるけど、 開発者ごとに違うし、そもそもアカウントとパスワードをソースコードに直接書きたくない。
そういった環境や開発者ごとに異なる情報を記述するために、 dotenv(dotenv-rails) を導入してみた。
Gemfile に
gem "dotenv-rails", groups: [:development, :test]
を追加して bundle install
。
プロジェクトのルートディレクトリに .env ファイルを作成し、環境変数にセットしたい情報を記述する。
GMAIL_ADDRESS="your-address@gmail.com" GMAIL_PASSWORD="your-password"
すると、config/environment/development.rb の ActionMailer の設定が次のように書ける。
config.action_mailer.delivery_method = :smtp config.action_mailer.raise_delivery_errors = true config.action_mailer.smtp_settings = { enable_starttls_auto: true, address: "smtp.gmail.com", port: 587, domain: "smtp.gmail.com", authentication: "plain", user_name: ENV["GMAIL_ADDRESS"], password: ENV["GMAIL_PASSWORD"] }
bin/rails server
で開発サーバーを起動すれば、.env ファイルに書いた環境変数が自動で読み込まれて ENV にセットされる。
.env ファイルをリポジトリから除外するように .gitignore に追加しておけば、 Gmail のアカウントとパスワードをソースコードに記述せずに、 心置きなくメール送信をテストできる。
Apple の新言語 Swift を使い始めていて、思いのほか書き心地が良かったので、 iOS アプリ開発は RubyMotion から Swift に移行することにした。
そこで、後戻りできないように、MacBook から RubyMotion をアンインストール。
sudo rm -rf /Library/RubyMotion sudo rm /usr/bin/motion rm ~/Library/RubyMotion
書き心地というか、楽しさでは RubyMotion も負けていないんだけど、 ライセンス更新に毎年 10000 円ほどかかるのがツライ。 iOS Developer Program で 7800 円かかるから余計にね。
Rails アプリの開発環境を Vagrant + Chef で構築していて、 PostgreSQL のインストールでつまづいたのでメモ。
まず Berkshelf で postgresql のクックブックをダウンロード。
echo cookbook "postgresql" >> Berksfile berks vendor cookbooks
postgresql クックブックはそのまま使うと、どうしてもエンコーディングに UTF-8 を指定してデータベースを作成できなかった。 対策として、postgresql をインポートするクックブックを新規作成する。
knife cookbook create postgresql_server_utf8
デフォルトのレシピを記述。
ENV["LANGUAGE"] = ENV["LANG"] = ENV["LC_ALL"] = "en_US.UTF-8" include_recipe "postgresql::server"
環境変数をセットしているのがポイント。
あとは Vagrantfile に
VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "hashicorp/precise64" config.vm.provision "chef_solo" do |chef| chef.cookbooks_path = ["./chef/cookbooks", "./chef/site-cookbooks"] chef.add_recipe "postgresql_server_utf8" chef.json = { "postgresql" => { "password" => { "postgres" => "postgres" }, "initdb_locale" => "en_US.UTF-8", "config" => { "lc_messages" => "en_US.UTF-8", "lc_monetary" => "en_US.UTF-8", "lc_numeric" => "en_US.UTF-8", "lc_time" => "en_US.UTF-8" } } } end end
を書いて、vagrant up/provision を実行すれば、 PostgreSQL をインストールできた。 エンコーディングに UTF-8 を指定してデータベースを作成できるようにもなった。
久しぶりにラーメン屋を新規開拓したくなったので、博多まで足を伸ばしてみた。 ターゲットは博多駅筑紫口から徒歩6分のところにある『博多 一双』。
入り口の券売機でラーメン(600円)とミニチャーハン(300円)の食券を購入。 兼虎のときも思ったけど、券売機だいぶ普及してるな。
まずラーメン。
麺は中細。スープは、豚骨特有の臭みを感じない、クリーミーな豚骨スープ。 一幸舎の系統に近いかも。 ただ、チャーシューの脂身部分が気になった。 トロトロになるまで煮込んである方が好み。
あとミニチャーハン。
タレでしっかりと味が付いていて、それでいてパラパラで旨い。 ラーメン屋にチャーハンがあったら毎回注文している気がする。 ラーメン屋のチャーハンは中華料理屋のそれよりも好きだな。
福岡市内の人気カレー店としてグルメ本ではおなじみの、 天神南にある『路地裏カレー Tiki』に行ってみた。
目印の看板。ここから古民家のわきを抜けて裏地に行くと
こんなところに店が。看板無かったら絶対分からない。 入るまでは本当に Tiki かも疑わしかった。 隠れ家みたいで男心をくすぐられる。
開店直後でまだ席が開いていたので、待たずに座れた。 このあとすぐ席埋まったけど。
早速、スパイシーチキンカレー(800円) を注文。
一口食べて驚いた。予想よりかなり辛い。 これで中辛とは・・・。 鶏肉はジューシー。カレールーはかなりスパイシーで旨い。 具にはナッツも入っているんだろうか? ときおり感じるカリっとした食感が新鮮で良かった。 額に汗をにじませながら完食。
パスワード変更機能を、Devise が提供するコントローラーを使わずに、自前で実装したいときのためのメモ。
現在のパスワード・新しいパスワード・新しいパスワード(確認用) を入力して変更する場合、 update_with_password を使う。
current_user.update_with_password( password: "new_password", password_confirmation: "new_password", current_password: "old_password" )
新しいパスワードで強制的に変更する場合、update を使う。 管理者がユーザーのパスワードを再発行するときなんかに使ったりする。
current_user.update( password: "new_password", password_confirmation: "new_password" )
注意点としては、現在ログインしているユーザーのパスワードを変更すると、 直後ログアウトした状態になってしまうので、 再ログインする処理が必要。
class SettingsController < ApplicationController # ... 省略 ... def update respond_to do |format| if current_user.update_with_password(user_params) # パスワードを変更するとログアウトしてしまうので、再ログインが必要 sign_in(current_user, bypass: true) format.html { redirect_to edit_setting_path } else format.html { render :edit } end end end end