knife solo prepareでエラー

knife-soloをインストールしたら何故かchef 12.0.0.alphaがインストールされてしまいました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ gem install knife-solo
Fetching: chef-zero-2.2.gem (100%)
Successfully installed chef-zero-2.2
Fetching: chef-12.0.0.alpha.1.gem (100%)
Successfully installed chef-12.0.0.alpha.1
Thanks for installing knife-solo!

If you run into any issues please let us know at:
https://github.com/matschaffer/knife-solo/issues

If you are upgrading knife-solo please uninstall any old versions by
running `gem clean knife-solo` to avoid any errors.

See http://bit.ly/CHEF-3255 for more information on the knife bug
that causes this.
Successfully installed knife-solo-0.4.2
Parsing documentation for chef-12.0.0.alpha.1
Installing ri documentation for chef-12.0.0.alpha.1
Parsing documentation for chef-zero-2.2
Installing ri documentation for chef-zero-2.2
Parsing documentation for knife-solo-0.4.2
Done installing documentation for chef, chef-zero, knife-solo after 20 seconds
3 gems installed

opscodeのchefのインストーラはまだ未対応なのか、knife solo prepareが失敗するようになってしまいました。

Read More

Vagrantの上のCentOS 6.5でyum updateした後、vagrant upで発生したエラーの原因と対処

概要

Vagrant + VirtualBoxで動かしているCentOS 6.5のVMでyum updateしたら、
その後のvagrant up実行時にエラーが出るようになったので原因を調べてみました。

1
2
3
4
5
6
7
8
9
10
11
12
$ vagrant up

(snip)

default: /vagrant => /Users/kawahara_taisuke/Documents/program/ruby/vagrant-test
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

忘れた頃にまた踏みそうなのでメモしておきます。

Read More

Scala 開発環境構築(IntelliJ IDEA, SBT, scalaenv)

前提と目標

下記のような開発環境の構築手順をメモしておきます。

  • Mac OSX 10.9.4
  • Scala 2.11.0
  • SBT 0.13 (ビルドツール)
  • IntelliJ IDEA 13.1 のCommunity Edition
  • IdeaVIMの設定(操作をvimライクに)
  • ターミナル用のScala環境の構築(scalaenv)

IntelliJ IDEA上でHello Worldを動かすところまでの手順を説明します。

ScalaとSBTはIntelliJのプラグインによって自動的にインストールされるため、個別にインストールする必要はありません。

現時点では、デフォルトのScalaのバージョンは2.10.4ですが、
SBTのビルド定義にバージョンを書けば、プロジェクトごとに異なるバージョンのScalaコンパイラでビルドできます。
具体例として2.11.0を使う方法を後述します。

また、上記の方法はIntelliJ IDEAのプラグインがScala一式をインストールしてしまうので、
ターミナル用の実行環境としてscalaenvを少し紹介します。

大半がIDEでの設定なので画像多め。

Read More

Octopressで見出しの目次を作る方法 改

以前このような記事を書きました。

Octopressで見出しの目次を作る方法 - 割り箸ポテチ

この記事を読まれた方から、より良い方法を教えて頂きました。

Octopressで見出しタグを目次にする方法 - Qiita

jekyll-toc-generatorというjekyllのプラグインを修正して使う方法です。
修正する理由は下記で解説されています。
jekyll-toc-generatorを個別ページで表示する場合の問題点 - MBA-HACK2

rdiscountの見出し作成機能を使わず、フィルタで本文をパースして見出しを構成してしまうというアプローチでした。
勉強になりました。その手があったか。

で、試してみたところ概ね自分の望むとおりに動いていました。素晴らしいです。

ただ一点だけ、<!-- more -->excerptで後半を省略する場合に、
カレントページへのアンカーのままだとリンク先が省略されて意図した動作をしなくなるので、
オプションで絶対パスを指定できるようにして使うことにしました。(あとatomに載った場合も困る)

修正した後のコードは下記です。

Read More

書評:パーフェクトRuby on Rails

これからRailsを覚える友人に書籍を薦める機会があればこの2冊を選びます。


特に1冊目の
パーフェクト Ruby on Rails
「これからRailsを覚える同僚に紹介する」という用途にも最適な一冊だと思います。

こういう書籍の内容は”Railsの標準機能”の枠に収まっている事が多いのですが、実際の開発現場においてはRails本体の機能ではないものの、
多くの現場でデファクトスタンダードになっているgemが数多く存在します。

そのような情報に関してはアンテナを広げてキャッチアップしていくしかないのですが、
この書籍はRails非標準の内容にまで深く踏み込んでおり、初学者の最初の一歩をブーストしてくれます。
もちろん非標準の内容については広く普及しているかどうか(かつ長くその地位を保てるか)意見のわかれる点でもあるのですが、
少なくとも自分の主観で読み進めて違和感のある部分はほとんどありませんでした。

Railsで初めてWebアプリ開発を行うという方には適切ではないかもしれませんが、
他の言語・フレームワークの経験があるような技術者にはこれくらいの内容のほうが効率が良いです。

具体的にどこがよかったかについては後半で述べます。

2冊目の
Ruby on Rails 4 アプリケーションプログラミング
は、1冊めを補完する目的でおすすめです。
バリデータやビューのヘルパなどのリファレンス的な情報が豊富です。

今回は、特に”パーフェクトRuby on Rails”について良いと思った点をメモしておこうと思います。

Read More

Octopressで見出しの目次を作る方法

調べて見つかった方法だとうまく行かなかったので、少し筋の悪い方法ですが自分で考えた方法をメモしておきます。

追記:ブログエンジンをHexoに移行しましたので、この記事の内容は現状と齟齬を生じている可能性があります。

最終的には、この記事に出ているような見出しの目次を作ることができました。この方法の特徴は下記の通りです。

  1. 日本語の見出しでもエラーにならず出力される。
  2. OctopressデフォルトのMarkdownパーサであるrdiscountを使用している。
  3. リンクが絶対パスになる(記事一覧画面のような「続きを読む(Read On)」で目次のリンク先が省略されるような状況でも有効なリンクになる)
  4. リンクが重複しない(後述)

前半はアプローチのメモです。実現方法は解決案以降に書いています。

Read More

ruby 実行環境の構築 - rbenvの使い方とその仕組み

rbenvとruby-buildのインストール方法

1
2
3
4
5
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

.bash_profileは自分の使っているシェルに応じて.zshrcなどに読み替えてください。

Read More