-
途中でssh接続なのか、localなのかを選択する場面があったが、今回はもうssh接続してVm上にいるので、localを選択
-
serverspec-initで作られたファイルを見る
- Rakefile
- spec/defalt/sample_spec.rb
- spec/spec_helper.rb
-
bundle install --path vnderでvender以下に置いてしまった
- 本来ならvender/bundle以下に行くべきだった
- 恐らくRakeとvagrantの両方でdefaltになってしまっているから起きたものと思われる
- task :defalt => :all => targets のようなサーキュレーションになっており、targetsでdefaltというvagrantのdefaltを見ようとするが、rakeファイルの中のdefaltをまたよんでしまい、task :defalt => :all => targets => defalt となってしまい、いつまでたってもvagrantのdefaltを見ようとしないっぽい。
- Rakefileの
task :default => :all
の部分をコメントアウトすることで解決 - serverspecのバージョンを昔のものに固定するのもありかも。
rake aborted!
Circular dependency detected: TOP => spec => spec:all => spec:default => spec:all
Tasks: TOP => spec => spec:all => spec:default
(See full trace by running task with --trace)
- 複数のVMを扱う場合は一つ一つに名前をつける必要がある。そういった場合はVagratfileに以下のように記述する。
- ただし名前付けを行った場合、
vagrant up
やvagrant ssh
、,bundle exec rake spec
を扱う際にいちいち名前の指定をしなければいけない!めんどい!!
config.vm.define :好きな名前 do |c|
c.vm.box = ""
c.vm.box_url = ""
c.vm.hostname = ""
define_virtualbox c
c.vm.provision :shell do |shell|
shell.path = "vagrant/build-proftpd.sh"
end
end
- まずはインストールされているかどうかのチェックから!
- リソースタイプの指定が上手くいかない
- by('gem')
- with_version('4.0.8')
- パッケージはテストを通るが、railsやrubygemsやrubyが通らない。
人によってはrubyがインストールされていることを確かめるために以下の手順で確かめていた!
1. /usr/local/rbenv/bin/rbenv に rbenv がインストールされていること
2. /etc/profile.d/rbenv.sh が正しく作成されていること
3. rbenv のプラグインとして ruby-build がインストールされていること
4. 目的のバージョンの Ruby が正しくインストールされていること
5. Ruby 2.1.2 が global として設定されていること
これぐらい確認しないとダメかな。。判断が難しい。
- unicorn, thin => rack ベースなのでアプリケーションサーバー
- webrick => http サーバー
- これらを雑にまとめるとwebサーバー
- Tipsはおまけ
- gem specification <gem名> :gemの仕様を確認できる。YAML形式でgemの依存関係などが出力される。
- serverspecはhaコピペがしやすいので各種サービスを参考に作るとできちゃう。かも。.
- 構築するアプリケーションがサードパーティのライブラリに依存している場合もある。このようなライブラリは、vendor/ ディレクトリへ配置するようにすると良い
- bundler:依存するパッケージをインストールする際に,
- 一部のバージョンを下げるなど、解決出来る組み合わせがあれば、うまく解決してくれる
- 開発環境を指定できる
- 何をインストールしたのかを管理できる
- serverspecはvendor/bundleディレクトリ以下にいれるべき