amasok's blog

Archive for Nov 2013

【middleman】ブログのカレンダーで月単位の表示

2013/11/30 12:20 tags: middleman, このエントリーをはてなブックマークに追加

久々にブログの構造自体をちょっといじったのでメモ

middleman-blogではテンプレートで年単位のカレンダーを表示してくれます。
しかし、一般的には月単位でのカレンダーになると思うので、その変更点を書きます。

対象

  • middleman blogのテンプレートを生成した人
  • 月単位のカレンダーを表示させたい人

方法

カレンダー部分で年単位表示をさせる部分があると思います。

source/layout.erb

1
2
3
4
5
6
<h2>By Year</h2> <ol> <% blog.articles.group_by {|a| a.date.year }.each do |year, articles| %> <li><%= link_to year, blog_year_path(year) %> (<%= articles.size %>)</a></li> <% end %> </ol>

修正後

1
2
3
4
5
6
7
8
9
10
11
<h2>By Year</h2> <ul> <% blog.articles.group_by {|a| a.date.year }.each do |year, articles_year | %> <li><%= link_to year, blog_year_path(year) %>(<%= articles_year.size %>)</li> <ul> <% blog.articles.group_by {|a| a.date.month }.each do |month, articles_month | %> <li><%= link_to month, blog_month_path(year, month) %> (<%= articles_month.size %>)</li> <% end %> </ul> <% end %> </ul>

簡単な修正だったけど久々にいじれてよかった。

参考

http://rubydoc.info/github/middleman/middleman-blog/master/Middleman/Blog/Helpers#blog_month_path-instance_method

rubyをrbenvで入れる

2013/11/29 00:34 tags: rbenv, ruby, このエントリーをはてなブックマークに追加

bundleをちゃんとするようになったら、ローカルがgemだらけなのが嫌になったので一から入れ直しました。 今回はrubyの導入を説明しようかと思います。

対象

  • homebrewを使ってる人
  • rubyをrbenvでバージョン管理したい人

実行環境

  • Mac(Mountain Lion)

方法

まずはbrewで必要なものをインストールします

terminal

1
2
$ brew install rbenv $ brew install ruby-build

ホームディレクトリでディレクトリ作成

terminal

1
2
$ cd ~ #ホームディレクトリへ $ mkdir .rbenv

下記内容を.bash_profileに追記

.bash_profile

1
2
export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)"

.bash_profileを再読み込み

terminal

1
$ source ~/.bash_profile

rubyのインストールできるリストを確認

terminal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ rbenv install -l Available versions: . . . 1.9.3-p125 1.9.3-p194 1.9.3-p286 1.9.3-p327 1.9.3-p362 1.9.3-p374 1.9.3-p385 1.9.3-p392 1.9.3-p429 1.9.3-p448 1.9.3-p484 1.9.3-preview1 1.9.3-rc1 2.0.0-dev 2.0.0-p0 2.0.0-p195 2.0.0-p247 2.0.0-p353 2.0.0-preview1 2.0.0-preview2 2.0.0-rc1 . . .

このようにリストがずらっと並ぶので、入れたいバージョンを指定してインストールします。

terminal

1
2
3
4
$ rbenv install 2.0.0-p353 $ rbenv versions system * 2.0.0-p353 (set by /Users/amasok/.rbenv/version)

インストールした2.0.0-p353をglobalに設定

terminal

1
2
3
$ rbenv global 2.0.0-p353 $ ruby -v ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin12.5.0]

以上です。

もしrubyが意図したバージョンに鳴ってない場合は下記コマンドで反映されるかもしれません。

terminal

1
$ rbenv rehash

bundle execの省略が微妙

2013/11/28 01:00 tags: bundle, このエントリーをはてなブックマークに追加

結論から書くと、僕が望んでいた形ではインストールできませんでした。

僕が望んでいた形は、

  • gemをグローバルな領域にインストールしない(path=vendor/bundleを使用)
  • プロジェクト配下のディレクトリならどの階層でも”bundle exec”を省略できる

今回は、僕が調べたことを3つ記していこうかと思います。 よかったら試してみてください。

対象者

  • bundleを使って“bundle exec"を毎回打ってる人

実行環境

  • mac(Mountain Lion)
  • ruby(2.0.0p247)

rbenv-binstubsを使う

制限事項

  • rbenvを使ってrubyを管理している
  • bundle installはグローバルな領域にインストールする(pathは指定しない)

方法

terminal

1
2
3
4
$ cd $ mkdir .rbenv/plugins $ cd .rbenv/plugins $ git clone git://github.com/ianheggie/rbenv-binstubs.git

上記のようにrbenvのプラグインとしてrbenv-binstubsてのを導入

terminal

1
2
3
$ bundle install --binstubs=vendor/bin $ rbenv rehash $ middleman s

上みたいに、bundle install –binstubs=bendor/binでgem自体はグローバルな領域で作るけど、バイナリ(コマンド)ファイルはプロジェクトディレクトリ内で作る。

これならプロジェクト内のどの階層でもbundle execが必要なくなるけどgemがグローバルな領域で存在しつづけてしまう。

binstubsで作ったbinにパスを通す

制限事項

  • プロジェクトディレクトリの第一階層のみで省略可(プロジェクトディレクトリ内のより深い階層からは省略不可)

方法

terminal

1
$ export PATH=./vendor/bin:$PATH

上記パスを通した後、下記のようにbundle install時にオプションを指定

1
$ bundle install --path=vendor/bundle --binstubs=vendor/bin

はい、この方法でプロジェクトのディレクトリの第一階層上でのみbundle execを省略できます。
なんか、うまいパスの通し方ないかなぁ。。
うまくいくと、このやり方の応用が一番なんとかできそうだけど。。

aliasをかける

制限事項

  • 文字数が少なければOK(完璧に省略する必要はないと考える人)

方法

書くまでもないかな。。。

.bash_profile

1
alias be='bundle exec'

はい、これで

terminal

1
$ be middleman s

とかができるようになりました。
どれもいまいち腑に落ちないけど、今のところ調べた結果のログとして記します。
なんか良い方法見つけたら新しく書こう。
てか、誰か良い方法教えてほしい。

参考

http://blog.takapra.com/2013/04/ruby-bundler-basic/

http://qiita.com/naoty_k/items/9000280b3c3a0e74a618

bundlerによるgemの管理

2013/11/27 00:18 tags: bundle, middleman, このエントリーをはてなブックマークに追加

昨日書いたmiddlemanの導入の記事を見た友人から、

「gemをbundleで管理してないの?」
という話をされ、
「だってわざわざ"bundle exec"とかつけるのめんどくさいじゃんヾ(・д・` )」

と返したのですが、せっかくブログから生まれた話だし、やってみるかー。
ということで、やってみました。

対象者

  • コマンドラインに慣れてる
  • rubyをPC(Mac)にインストールできる
  • gemで何かしらをインストールしたことある
  • bundle installコマンドをわけわからずでも打ったことがある

実施環境

  • mac(Mountain Lion)
  • ruby(2.0.0p247)

bundlerとは

完全に憶測で書くので間違ってたらしれっと直すかもですが。。

bundleとはgemをPCに依存せずプロジェクト毎に管理できるツールです。。

例えば、あるrailsプロジェクトがあったとして、一つは4.0系一つは3.2系を使っていたとします。
リポジトリ管理されており、同じPC内で違うバージョンのプロジェクトをどう扱えばいいか?

そんな時にbundleが便利なようです(想像で書いてます)

あとは、共同開発しててAさんとBさんで入ってるgemのバージョンが違うとかかな。
こっちのほうがよくありそう。

bundlerのインストール

terminal

1
$ gem install bundler

これだけでOK

さすがに、gemを管理するのにbundlerは入れないと動かないです。

bundle initしてみる

プロジェクトのディレクトリを作って、とりあえずbundle initしてみましょう。
terminal

1
2
3
4
$ mkdir project $ cd project $ bundle init Writing new Gemfile to /Users/amasoktest3/Gemfile

するとGemfileファイルが出来上がると思います。

Gemfile

1
2
3
4
# A sample Gemfile source "https://rubygems.org" # gem "rails"

今はせっかくmiddlemanをやってるので、middlemanをインストールしてみましょう。

Gemfile

1
2
3
4
# A sample Gemfile source "https://rubygems.org" gem "middleman"

上記のように変更して、

terminal

1
$ bundle install --path vendor/boudle

上記コマンドでmiddlemanがインストールされます。

また、middlemanに必要な関連ファイルもすべてインストールされます。
それらはすべて、vendor/bundle配下に格納されています。
しかし、vendor/bundle配下はパスが通っていません。どう使うか?
(パスを通すって何?って人は別で調べてください。)

そこで、一番はじめに書いた"bundle exec"が登場します。

terminal

1
$ bundle exec middleman init .

“init ."のドットはカレントディレクトリをさします。 今回でいうところの"project"です。

後はmiddlemanコマンドの前に"bundle exec"を全部つければ middlemanの導入と同じにすればいいです。

また、rubyをrbenvでインストールしている方は"binstubs"てのを使って煩わしい"bundle exec"を省略できちゃうみたいです。

試してみてうまくいきそうなら、また別記事で書きます。

安い焼肉

2013/11/26 00:00 tags: 焼肉, 五反田, このエントリーをはてなブックマークに追加

せっかくなので、食べログの記事でも書いてみようかと思います。
昨日の夜に友人と焼肉を食べにいきました。

技術ブログ以外も書いていけたらと思います。

場所

僕が知る中で一位を争う安い焼肉店です。

肉は普通でした。(安いので十分)
安い焼肉屋は肉がボロボロってところもありますが、ここはそんなことなかったです。

雰囲気

あらゆる繁華街に存在する安安ですが、この五反田西口店のよかったところは煙たくなかったことですね。
もちろんたまたまかもしれませんが。。。
他の店舗でいくつか安安にいったことあるのですが、ほぼすべて煙たかったです。
日曜の夜だったので、人が少なかったからかもしれません。