スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

bundle install で therubyracer がエラーとなってインストール出来ない

bundle install をした時に下記のエラーが出て、therubyracer がインストール出来なかった。
Bundler::GemspecError: Could not read gem at /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/cache/therubyracer-0.12.3.gem. It may be corrupted.
An error occurred while installing therubyracer (0.12.3), and Bundler cannot continue.
Make sure that `gem install therubyracer -v '0.12.3'` succeeds before bundling.


エラーの通り
gem install therubyracer -v '0.12.3'
を実行しても
ERROR:  Error installing therubyracer:
invalid gem: package metadata is missing in /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/cache/therubyracer-0.12.3.gem
のエラーが出てしまって、gemのインストールも出来なかった。

壊れたgemがあると発生する事があるようなので、therubyracer-0.12.3.gem を消してからインストールしてみる。
$ rm /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/cache/therubyracer-0.12.3.gem



それでもダメな時は、libv8を一旦消してlibv8とtherubyracerを一気にインストールすると良いらしい。

$ gem list | grep v8
libv8 (3.16.14.19 x86_64-linux)
$ gem uninstall libv8
Successfully uninstalled libv8-3.16.14.19-x86_64-linux
$ gem install therubyracer -v '0.12.3' -- --with-v8-dir
スポンサーサイト

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

最近の記事


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。