ゼットコードログ

コード的な何かを書いていきます。

Circle CIのJobで任意の環境変数を設定するには

Circle CI(version 2)でJobを実行するときに、環境変数を設定するには BASH_ENV変数に追加するとよい。 「BASH_ENVの中」に>>で追加するのがミソ。

たとえば、gitのリポジトリで最新のタグ名をTAG_NAMEという環境変数として定義したい場合はこんな感じ。

echo 'export TAG_NAME=`git describe --tags`' >> $BASH_ENV

そうすると、jobs実行時のコマンドで普通に環境変数として参照できる。

    steps:
      - checkout
      - run: gcloud container builds submit --config=cloudbuild.yaml --substitutions REVISION_ID=$TAG_NAME .

最初、BASH_ENVというのはあくまでも例のひとつで、そこに自分の都合に合わせて環境変数を定義する感じかと思っていたらそんなことはなかった。

Herokuよく使うコマンドメモ

Herokuでよく使うコマンドの覚書的メモ。よく忘れるからね。

アプリケーションを作成し、デプロイする

heroku create
git push heroku master

アプリケーションの実行状態を確認

heroku ps

アプリケーションのスケールアップ(お財布と要相談)

heroku ps:scale web=2

アプリケーションのログを確認

--tailオプションでリアルタイムに確認可能

heroku logs 
heroku logs --tail

アプリケーションに対してコマンドを実行する

ただし、実行するサーバーはコマンド実行専用に立ち上がる仕様を把握しておこう。ファイルなどを直接更新しても永続化されない。

#bashでログイン
heroku run bash
#railsコンソールを起動
heroku run console
#migrationを実行
heroku run rake db:migrate
#psqlコマンドを実行する
heroku pg:psql --app {appName} {dbName}

アプリケーションのメンテナンス状態を管理

heroku maintenance:on
heroku maintenance
heroku maintenance:off

環境変数を確認、設定する

ホスト名などいった設定値は、ソースに直接書くのではなく、環境変数を使うと便利。

#変数の一覧を取得
heroku config
#変数を指定して取得
heroku config:get {keyName}
#変数を設定
heroku config:set {keyName}={value}
#変数を削除
heroku config:unset {keyName}

ソース内では次のようにENV変数で読み込める。

hostName = ENV['hostname']

アプリケーションを再起動

heroku restart

#Dynoを指定して起動する場合はweb.xxを設定
heroku restart web.1

アドオンを追加

heroku addons:add {addonName} {addodOption}

Railsテスト関連のメモ

RSpecのセットアップ

./bin/rails g rspec:install

テスト用ファイルの雛形作成

#モデルのテスト
./bin/rails g rspec:model {modelName}

#コントローラーのテスト
./bin/rails g rspec:controller {controllerName}

#ビューのテスト
./bin/rails g rspec:view {controllerName} {actionName}

テストの実行

./bin/bundle exec rspec {specFileName}

FactoryGirl用ファイルの準備

./bin/rails g factory_girl:model {modelName}

Rails関連のコマンドのメモ書き

アプリケーションに設定されているrouteを確認する

./bin/rake routes

または、http://{site-name}:{port}/rails/info/routes でも確認可能(Rails4以降)。

controllerを追加する

./bin/rails g controller {controllerName}

railsでDB関連の操作

データベースの作成(初回)

./bin/rake db:create

データベースの更新、マイグレーションファイルの適用

./bin/rake db:migrate

現在のマイグレーションファイルの適用状況を確認する

./bin/rake db:migrate:status

modelを作成する

./bin/rails g model User {columnName}:{Type} ...

modelにカラムを追加する

./bin/rails g migration Add{columnName}To{tableName} {columnName}:{Type}

sqliteを起動して対話形式でSQLを発行する

sqlite3 db/development.sqlite3

bundlerでrailsをインストールする

bundler以外はシステムに直接インストールせずに、railsをインストールする 以下、コマンドのメモ。よく忘れるからね。

$ mkdir myproject
$ cd myproject
$ bundle init

# Gemfileのrailsのコメントを外す
$ bundle install --path vendor/bundle

#上書きするか?と聞いてくるのでyを入力
$ bundle exec rails new .
# sqliteではないDBを利用する場合は-dオプションで指定する。
$ bundle exec rails new . -d postgresql

# Gemfileのtherubyracerのコメントを外す
$ bundle install --path vendor/bundle
$ ./bin/rails server

#hostやipを指定する場合は-bオプション
$ ./bin/rails server -b 192.168.33.10

scaffoldでアプリのひな形を作成

./bin/rails generate scaffold myapp content:text