Qiita のアカウントを作りました

前から「使ってみたいな〜」と思っていた Qiita のアカウントを作りました。

http://qiita.com/ltcmdr927

類似サービスの中でもコードスニペットが格段にコピペしやすい見やすいと思います。今後ナレッジは Qiita に投稿することが多くなる気がします。

rails のデバッグ

ブラウザ立ち上げたり rails s したりするのがメンドイので、シェルスクリプトでなんとかすることにしています。Mac です。

以下設定

$ echo "alias rserver='bundle exec rails s'" >> ~/.bash_profile
$ echo -e "alias rdebug='open -a \"/Applications/Google Chrome.app/\" \"http://localhost:3000/\"'"  >> ~/.bash_profile
$ source ~/.bash_profile

使うときは以下

$ rdebug # ブラウザが http://localhost:3000/ で起動する
$ rserver # bundle exec rails s が走る。ctrl + c で終了

今更感はありますが個人的にはこれで満足です。

カレントディレクトリに rails new したい

例えば普通に $ rails new hoge などと実行すると丁寧に hoge ディレクトリを作り、その中に rails の諸々が入っているという状態になる訳ですが「すでにディレクトリがある場合」は

$ cd awesome/
$ rails new .

などとすれば OK です。この際、プロジェクトの名前は「カレントディレクトリ名」になります。

一応、

$ mkdir awesome/
$ pwd
/path/to/awesome
$ rails new awesome /path/to/awesome/

などでも可能ですが、上の方がシンプルなので上の方を使っていくのが良いと思われます。

このコマンド、簡単なのにたまにど忘れする時があるので書いとこうと思ったので書きました。

Ubuntu Server の EBS-Backed AMI を作成する Packer のスクリプトを書いた

 ここに配置しました。過去に投稿した json から更に発展し、sh をキックして ruby をインストールするようにしてあります。

 本当であれば /provisioners/inline か /provisioners/scripts のどちらかに統合したかったのですが、普通に inline で apt-get install -y build-essential などとやろうとすると

amazon-ebs: Reading package lists... Done
amazon-ebs: Building dependency tree
amazon-ebs: Reading state information... Done
amazon-ebs: Package build-essential is not available, but is referred to by another package.
amazon-ebs: This may mean that the package is missing, has been obsoleted, or
amazon-ebs: is only available from another source
amazon-ebs:
amazon-ebs: E: Package 'build-essential' has no installation candidate

 みたいなエラーが出て rubyコンパイル出来ず AMI の作成に失敗してしまう点が謎でした。かと言って scripts 側に apt-get update から書くと同じく

amazon-ebs: Reading package lists... Done
amazon-ebs: Building dependency tree
amazon-ebs: Reading state information... Done
amazon-ebs: Package build-essential is not available, but is referred to by another package.
amazon-ebs: This may mean that the package is missing, has been obsoleted, or
amazon-ebs: is only available from another source
amazon-ebs:
amazon-ebs: E: Package 'build-essential' has no installation candidate

 みたいなことになってしまうしよくわかりません。事前に apt-get update してるし、1行ずつ実行すると通るんですが。なんか根本的に間違ってんのかな。

 昔は Boxgrinder とか使ってたんですが今なら Packer でもいいかなという感じでした。

Packer で CentOS6 とか Ubuntu Server 12.04 の AMI を作る

CentOS 6 の場合


Packer AWS build (CentOS6) with yum, selinux confi ...


Ubuntu Server 12.04 の場合


Packer AWS build (Ubuntu Server 12.04 LTS) with ap ...

ちょっと前は boxgrinder で一から作ってたんですが、時間を短縮できるし公式の AMI を使うことにしました。便利な時代になりましたね。

Gist の貼り付けを試したかっただけの記事です。

OpenSSL 1.0.1f の make に失敗する

OpenSSL をソースからインストールしようとした際、以下のようなエラーが出て make が失敗する。

make[2]: ディレクトリ `/usr/local/src/openssl-1.0.1f/apps' に入ります
(中略)
../libcrypto.a(eng_rsax.o): In function `e_rsax_bn_mod_exp':
eng_rsax.c:(.text+0x851): undefined reference to `mod_exp_512'
../libcrypto.a(e_rc4_hmac_md5.o): In function `rc4_hmac_md5_cipher':
e_rc4_hmac_md5.c:(.text+0x302): undefined reference to `rc4_md5_enc'
e_rc4_hmac_md5.c:(.text+0x567): undefined reference to `rc4_md5_enc'
collect2: ld はステータス 1 で終了しました
make[2]: *** [link_app.] エラー 1
make[2]: ディレクトリ `/usr/local/src/openssl-1.0.1f/apps' から出ます
make[1]: *** [openssl] エラー 2
make[1]: ディレクトリ `/usr/local/src/openssl-1.0.1f/apps' から出ます
make: *** [build_apps] エラー 1

ここに書いてある内容によると ./Configure(Cが大文字)の際にビルド対象を明示すれば良いらしい。なので

# ./Configure linux-x86_64
# make
# make install

大体の環境であればこれでいけるとの事。他にも linux-generic32 とか linux-generic64 とかあるっぽい。

ていうか何でパスカルケースなんだ。このエラーに遭遇するまで configure が存在しないのかと思ってました。達人への道のりは遠い。