タグ別アーカイブ: mac

Mac で Ruby環境構築(rbenv でのインストールから rbenv-gemset )


【追記】 2014/03/17

rbenv-aliases というrbenvのプラグインを入れておくと、 .ruby-version で指定するときに ruby2.0.0p… などの p… 以降を指定せずに 2.0.0 などで指定しておけば p… 以降はよしなに判断して最新のものを適用してくれる。

【追記】2013/12/18

‘-k (–keep)’ オプションを使うことでrbenv配下のディレクトリにRuby本体のソースもダウンロードしてくれる。
そして、pry-docをインストールするとpry上からRubyのソース(C実装)を確認できる。
pry-docでカジュアルにRubyのソースコードを読む

% RUBY_CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install -k 2.0.0-p353

【追記】 2013/05/23

Ruby2.0 以上をrbenv + ruby-buildでビルドするときに日本語環境とSSL環境を有効にする方法。
1.9までは「CONFIGURE_OPTS」だったのに「RUBY_CONFIGURE_OPTS」という環境変数で指定してあげないとダメみたい。

% RUBY_CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl)" rbenv install 2.0.0-p195 

参考:MacにRubyをインストールする時のメモ


以前に書いた記事でも
Ruby環境構築(Mac rbenv編)
rbenvによる環境構築を書いたのですが、新たにマシンをセットアップするということで改めてまとめてみました。
OSは Mountain Lion です!!

rbenvなどのインストールからちょっと中断まで

基本的な流れは以前の記事と同じです。

% brew install rbenv
% brew install ruby-build
% eval "$(rbenv init -)" >> ~/.zshenv

% brew install openssl
% brew install readline 

## 以前は成功した、「brew link」コマンド何故か以下のWarning。。。
% brew link openssl
Warning: openssl is keg-only and must be linked with --force
Note that doing so can interfere with building software.

% brew link readline
Warning: readline is keg-only and must be linked with --force
Note that doing so can interfere with building software.

「brew link」ではreadline, opensslを /usr/local/bin にリンクを張るために行なっているのですが、「keg-only」のWarningが出てしまう。「–force」を使えばLinkは通るけど「brew doctor」ではまたWarningが出る。

homebrewについてはこのへん参考
一旦保留ということにしておこう。


rbenvでRubyをインストール

【参考】
* rbenvでのビルドに再挑戦(成功)
* rbenv & ruby-build の使い方メモ

上記で「brew link」ができなかったので明示的に「brew –prefix FORMULA」でパスを指定してインストールする。

しかし、またまたエラー。。。GCC周りがおかしいようです。AppleはGCCの仕様が変わってコンパイルできなくなることが多いなー。。

% CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl)" rbenv install 1.9.3-p286

Downloading yaml-0.1.4.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/36c852831d02cf90508c29852361d01b
Installing yaml-0.1.4...
Installed yaml-0.1.4 to /Users/takaesu-m/.rbenv/versions/1.9.3-p286

Downloading ruby-1.9.3-p286.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/e2469b55c2a3d0d643097d47fe4984bb
Installing ruby-1.9.3-p286...

BUILD FAILED

Inspect or clean up the working tree at /var/folders/yx/11hj2qx50z56bw5dx05_ggvm0000gn/T/ruby-build.20130211111658.95876
Results logged to /var/folders/yx/11hj2qx50z56bw5dx05_ggvm0000gn/T/ruby-build.20130211111658.95876.log

Last 10 log lines:
compiling regenc.c
compiling regerror.c
compiling regexec.c
compiling regparse.c
regparse.c:582:15: error: implicit conversion loses integer precision: 'st_index_t' (aka 'unsigned long') to 'int' [-Werror,-Wshorten-64-to-32]
    return t->num_entries;
    ~~~~~~ ~~~^~~~~~~~~~~
1 error generated.
make: *** [regparse.o] Error 1
make: *** Waiting for unfinished jobs....
  34.95s user 13.27s system 102% cpu 47.008 total

ググってみるとこの記事を発見。ページ下部の部分に参考になる内容が!!
Cannot compile ruby 1.9.3

Ruby環境 rbenv mac

「brew tap」コマンドはhomebrew に参照するリポジトリを追加するものです。
この内容でやっていることは

  1. berwをアップデート
  2. 「homebrew/dups」をhomebrewで参照するリポジトリとして追加
  3. 「apple-gcc42」をインストール。
  4. 「apple-gcc42」を環境変数の CC としてExport
  5. brewを使ってrubyをインストール

4番目のExportまで行ったら、再度以下のコマンドでRubyをインストール

% CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl)" rbenv install 1.9.3-p286

無事インストール出来ました!!

なお、「rbenv install」の前にCONFIGURE_OPTSをつけるのはMacOSXのみのようです。
brew linkができていたら、readlineやopensslを個別に指定しなくても、以下のようにできるようです。

CONFIGURE_OPTS="--with-opt-dir=/usr/local" rbenv install 1.9.3-p286  

rbenv-gemsetの設定

インストールなど
% brew install rbenv-gemset
所定のディレクトリで試してみる
% cd ~/workspace

rbenv gemset create [version] [gemset名] でgemsetを作成
% rbenv gemset create 1.9.3-p286 commands

gemsets作成確認
% rbenv gemset list
1.9.3-p286:
  commands

この設定で以下のディレクトリにgemsetができる
% ls -l ~/.rbenv/versions/1.9.3-p385/gemsets
total 0
drwxr-xr-x  7 takaesu-m  staff  238  3 12 11:27 commands

gemsetsを利用するため「.rbenv-gemsets」を作成する(内容は commands と使用したいgemset名を入れる)
該当ディレクトリより下位はcommandsというgemsetsを利用する
% echo commands > .rbenv-gemset

アクティブなを確認する
% rbenv gemset active
commands

mechanizeというgemをインストールしてみる
% gem install mechanize

gemインストール確認
% gem list
*** LOCAL GEMS ***

domain_name (0.5.7)
mechanize (2.5.1)
mime-types (1.21)
net-http-digest_auth (1.2.1)
net-http-persistent (2.8)
nokogiri (1.5.6)
ntlm-http (0.1.1)
rbenv-rehash (0.3)
unf (0.0.5)
unf_ext (0.0.6)
webrobots (0.1.0)

これでひと通り
rbenv + rbenv-gemset の インストール手順完了です。

関係のない一言

  • 「rbenv local」便利らしい!!

MacでJava7環境の日本語扱いの問題について(eclipse, IntelliJ IDEA)


Macに標準でインストールされているJavaはAppleから提供されているJDK1.6系のものです。JDK1.7系はすでにリリースされているのでその最新のJDK1.7(java7)を利用するようにしたいと思いますよねー!!
Oracleのサイトから最新のJavaをインストールするには、以下を確認すればインストールできると思います。
http://www.java.com/ja/download/faq/java_mac.xml

■インストール後にバージョンを確認してみる

% java -version
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)

これで、java7系が無事インストールできていると思います。

そこでテストコードを書く時などをわかりやすくするために、 日本語でテストメソッド を書くことも多いと思います。そんな時に日本語がうまく認識できずに「ClassNotFoundException」となってしまいます。どうにか解決するようにちょっと試行錯誤してみました。

EclipseやIntellij IDEAなどのIDEからテストを実行する時に発生する問題で、コマンドラインからテストを実行すればとくに問題はおきません。

自分の場合はMavenを利用してHogeTestというテストを実行するために「mvn test -Dtest=HogeTest」のコマンドを実行しても問題無く実行することが出来ました。


Eclipseでの日本語問題の解決方法

以下の様なテストクラスがあったとします。

public class HogeTest {

    @Test
    public void テストメソッド() {
        assertTrue(true);
    }

}

単純に実行した時点では「ClassNotFoundException」になってしまいます。
次の記事を参考にEclipseで実行時に使用するVMの引数に「-Dsun.jnu.encoding=UTF-8」というオプションを指定してあげれば日本語メソッドも解決出来ます。
JUnit のテストメソッド名に日本語を使ったときの問題の解決法 (Java 7)

しかし、以下のようにEnclosedを用いてネストしたテストクラス名を日本語とした場合

同じく「ClassNotFoundException」になってしまいます。

@RunWith(Enclosed.class)
public class HogeTest { 
    public static class ネストしたテストクラス {
        @Test
        public void ネストテストメソッド() {
            assertTrue(true);
        }
    }
}

これはちょっと、謎なんですが、以下のコマンドでeclipseを起動してあげると解決します。今のところこの方法で起動するようにすればとりあえず日本語のクラス名やメソッド名でも問題無く実行できるようになります。

% open /Application/eclipse/Eclipse.app

なんとなく、腑に落ちないのですがとり上記コマンドをエイリアス貼って起動するようにしています。


Intellij IDEAでの日本語問題の解決方法

基本的にはEclipseと同様に日本語のクラス名やメソッドがある場合「ClassNotFoundException」となってしまいます。
以下の2つの手順を実行すれば解決します!

  1. IntelliJ IDEA の日本語テストメソッド名の実行で再度ハマった話
    Run => Edit Configrations => Defaults => JUnit の VM options に “-Dsun.jnu.encoding=UTF-8” を追加する。

  2. IntelliJ IDEA + Spock で日本語テストメソッド実行時にハマった話
    「/Applications/IntelliJ\ IDEA\ 12\ CE.app/Contents/Info.plist」ファイル(Info.plist)を開いて、VMOptions の string の最後に「-Dgroovy.source.encoding=UTF-8 -Dfile.encoding=UTF-8」を追加する。 IntelliJ IDEAまでのPathは環境に合わせて適宜変更してください。

「1」 についてはEclipseのVM引数と同じですねー。
「2」 については記事内にもあるのですが、テストクラスでテストメソッドを指定して実行しようとした時の対処です。この設定を入れなくてもテストクラス全体を一気に実行する場合は問題無く実行できます。

これでそれぞれのIDE上でとりあえず日本語の問題は解決できると思います!

Ruby環境構築(Mac rbenv編)


これまではrubyのバージョン管理といえばrvmだったと思います。自分も以前はrvmでいれていました。

そのあとrubyを全然使っていなかったからきにしていなかったけど、

この度、Lokka というブログ用のCMSツールを入れようということでちょっと話題のrbenvでRubyを管理してみようと思いました。ちょっとそのログです。

【參考】

http://blog.twiwt.org/e/66a1d0
http://qiita.com/items/9dd797f42e7bea674705(開発版などをインストールするなど、とても参考になるリンク)

これも参考になる(readline, opensslなどのリンクはない)
http://pplog.org/?p=2155

Mountain lion 用の参考サイト
http://qiita.com/items/a60886152a4c99ce1017

 

  • インストールは以下のコマンドで一発
% brew install rbenv
% brew install ruby-build

  • シェルの初期化ファイルに(.zshrc, .bashrcなど)以下を記載する

    自分は.zshenvに記述しました。

% eval "$(rbenv init -)"

  • readline(irbでの日本語化)を入れてインストールするといいみたい。ちょっとこの辺わからない。。
% brew install readline openssl
% brew link readline
% brew link openssl

  • ここでインストール

% CONFIGURE_OPTS="--with-readline-dir=/usr/local" rbenv install 1.9.2-p290

おぉってなんかGCC関連でエラーが。。。Xcodeも入れているのにGCCもパス通っているのに。。なぜ?

ここをみるとGCCが変わったとのことです。

しかし、Xcodeのコマンドラインエディションを入れていればインストールできている人が多くいますが、k自分の場合はXcodeもいれ、Xcodeコマンドラインエディションを入れてもダメでした。

以下のリンクからGCCのインストーラをダウンロードしてインストールする。

https://github.com/kennethreitz/osx-gcc-installer/downloads

これでインストールできたーー1.9.2と1.9.3を入れてみよう


% CONFIGURE_OPTS="--with-readline-dir=/usr/local" rbenv install 1.9.2-p290
% CONFIGURE_OPTS="--with-readline-dir=/usr/local" rbenv install 1.9.3-p125
% rbenv rehash

インストール後はrbenv rehash というコマンドを打つのが必須みたい。railsのようなコマンドを含むgemを入れた場合も同様。

rbenv rehash は ~/.rbenv/shims というディレクトリに ruby 自体や gem でインストールした実行ファイルを起動するための実行ファイルを作ってくれる。

% gem install rbenv-rehash
% <strong><span style="color: #ff6600;">各バージョンでインストール</span></strong>しておくとrbenv rehash を打たなくてもいいみたい。

 

不要になったrubyを削除するには普通にファイルを消す


% rm -rf ~/.rbenv/versions/1.9.3-p125

 

その他のコマンドは以下を參考に。

http://blog.twiwt.org/e/66a1d0

rbenvでインストールした 1.9.2-p290を使用する
% rbenv global 1.9.2-p290

システムのRubyに戻す
% rbenv global system

SSH 秘密鍵/公開鍵のファイル名を変更する


 
 

Githubなどにアップする際SSHの公開鍵認証を使うと思います。

その際、以下のように鍵を生成するとid_rsa(秘密鍵) , id_rsa_pub(公開鍵)が生成されます。
 

% ssh-keygen -t rsa -C "メールアドレス"

 
作成したあとでリポジトリごとに鍵を管理したかったり、ファイルごとに鍵を管理したかったりするために

 
 

ファイル名を変更したい場合があると思います。何も考えずにファイル名を変更するとSSHで秘密鍵の情報が読み取れずPermission deniedのエラーが出て接続できなくなっちゃいます。

 

変更したファイル名をSSHに認識させるために教えてあげる必要があります。

 

「~/.ssh/config」(存在しなければ作る)に以下を記述するとSSHが変更したファイル名で認識します。
【參考】http://logrepo.blogspot.jp/2010/08/github-ssh.html

 

% vi ~/.ssh/config
Host github.com
User git
Hostname github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/taka.esu.user_rsa

   

というか、、、

そもそもはじめに生成するときに作成したいファイル名を指定すれば問題はないのですが、、、

ssh-keygenコマンドを実行した時に対話形式でファイル名などを指定できるので、そこで指定する。

    

[mac] homebrewでMySQLをインストール


 
 
homebrewでmysqlをインストールする際に注意する点などを書いてみます。
普通に以下のコマンドでインストールできます。
インストール後になんやら出てきますが、初期設定方法が書かれている(長いので省略します)。

% brew install mysql
・・・出力省略・・・

これはいつでも、以下のコマンドを実行することで確認できる
% brew info mysql

次の手順で進めていく(以下の内容は % brew info mysql で出力される内容に全て書いてある)

  1. 初期化コマンドの実行
  2. mysqlサーバの起動 これでmysqlは使用可能になる
  3. 自動起動の設定
1.初期化コマンドの実行(出力結果で重要な箇所は赤色 ユーザの作成とデーモンとして動かす設定)
% unset TMPDIR 
% mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/local/Cellar/mysql/5.5.20/bin/mysqladmin -u root password 'new-password' /usr/local/Cellar/mysql/5.5.20/bin/mysqladmin -u root -h taka-mac.local password 'new-password'

Alternatively you can run:
/usr/local/Cellar/mysql/5.5.20/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr/local/Cellar/mysql/5.5.20 ; /usr/local/Cellar/mysql/5.5.20/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/local/Cellar/mysql/5.5.20/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/local/Cellar/mysql/5.5.20/scripts/mysqlbug script!

 
 

2.mysqlサーバの起動
% mysql.server start

 
 

3.自動起動の設定
新規インストール時
% mkdir -p ~/Library/LaunchAgents 
% cp /usr/local/Cellar/mysql/5.5.20/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/ 
% launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

アップグレード時
% launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist 
% cp /usr/local/Cellar/mysql/5.5.20/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/ 
% launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

 
 
あとは普通に以下のように接続しユーザやDBの作成を行う。

% mysql -uroot