unicornの起動スクリプトをメモ

unicornの起動スクリプトをメモ。
export PATHの部分は、bundleの実行パス。
gem environmentで出てくる一覧の「EXECUTABLE DIRECTORY」を指定する。
#!/bin/sh

# chkconfig: - 85 15
# description: start/stop unicorn script.
# processname: unicorn_app

export PATH=/home/vagrant/.rbenv/versions/2.3.1/bin

# move to project root directory
NAME="Unicorn"
APP_ROOT_DIR="/vagrant/rails_root"
PID="$APP_ROOT_DIR/tmp/pids/unicorn.pid"
CONF="$APP_ROOT_DIR/config/unicorn/development.rb"
ENVIROMENT="development"
USER="vagrant"

start()
{
if [ -e $PID ]; then
echo "$NAME already started";
exit 1;
fi
echo "start $NAME";
cd $APP_ROOT_DIR
su -c "bundle exec unicorn -E $ENVIROMENT -c $CONF -D" $USER
}

stop()
{
if [ ! -e $PID ]; then
echo "$NAME not started";
exit 1;
fi
echo "stop $NAME";
su -c "kill -QUIT `cat ${PID}`" $USER
su -c "rm -f $PID" $USER
}

force_stop()
{
if [ ! -e $PID ]; then
echo "$NAME not started";
exit 1;
fi
echo "stop $NAME";
su -c "kill -TERM `cat ${PID}`" $USER
su -c "rm -f $PID" $USER
}

reload()
{
if [ ! -e $PID ]; then
echo "$NAME not started";
start
exit 0;
fi
echo "reload $NAME";
su -c "kill -HUP `cat ${PID}`" $USER
}

restart()
{
stop
start
}

case "$1" in
start)
start
;;
stop)
stop
;;
force-stop)
force_stop
;;
reload)
reload
;;
restart)
restart
;;
*)
echo "Syntax Error: release [start|stop|force-stop|reload|restart]"
;;
esac

exit


これを「/etc/init.d/unicorn_rails_app」とかって名前で保存して実行権限を付与する。
sudo chmod +x /etc/init.d/unicorn_rails_app

これで
$ sudo service unicorn_rails_app start
$ sudo service unicorn_rails_app stop
で実行出来る。

参考サイト
Unicorn プロセスを自動起動させる init.d スクリプト用の Chef Recipe
bundleコマンドのパスを通す方法
Unicorn - 起動スクリプト作成!
スポンサーサイト

accepts_nested_attributes_for と fields_for で生成したフォームに値を設定する方法のメモ

accepts_nested_attributes_for と fields_for で生成したフォームに値を設定する方法のメモ。

User Model
class User < ActiveRecord::Base
has_many :posts
accepts_nested_attributes_for :posts
end

Post Model
class Post < ActiveRecord::Base
belongs_to :users
end

とModelを定義した場合。

Controller
def entry
@users = User.new

posts_attributes = []
2.time |n| do
# 未入力を作る場合はこっち
# @event_users.event_user_joins.build

# 初期値
posts_attributes_attributes.push({title: "タイトル#{n}"})
end

@users.posts_attributes = posts_attributes
end


View
= form_for(@users) do |f|
dl
= f.fields_for :posts do |pf|
dt
= pf.object.title # タイトルを表示
dd
= pf.text_field :title # 入力フォーム


参考サイト
ネストされたモデル(親子関係を持つモデル)で、子を表示、編集するには
複数の子レコードを作成・更新する. accepts_nested_attributes_for

プロフィール

U2K

Author:U2K
いろいろプログラムに関しての覚え書きをちょくちょくと書いていきます。

オススメ










オススメ

忍者AdMax

u2k on Twitter

最近の記事