haiju's 開発メモ

開発に必要な情報を自分用にメモ

CrystalのパッケージマネージャShardsの使い方とWebフレームワークのKemalを試してみるテスト

この記事はCrystal Advent Calendar 2016 の23日目の記事です。

CrystalのコードはRubyに似ているので、階乗とかフィボナッチ数

のプログラムを書いたりしたことはあったけど、パッケージマネージャ

のShardsを使ったアプリ開発はやったことなかったな。

と思って、その使い方の練習とフルスタックじゃないWebフレームワーク

を試してみたいなということで、Crystalの軽量フレームワークといえば

Kemalじゃね?ってことで、Hello World!を出力する簡単なコードを

書いて実行してみることにする。

※自分の環境

systemにanyenv + crenvで0.20.0をインストール。

[手順]

1. プロジェクトを作成しルートディレクトリへ移動。

% crystal init app example
create example/.gitignore
create example/LICENSE
create example/README.md
create example/.travis.yml
create example/shard.yml
create example/src/example.cr
create example/src/example/version.cr
create example/spec/spec_helper.cr
create example/spec/example_spec.cr
Initialized empty Git repository in /home/haiju/workspace/example/.git/

% cd example

2. ルートディレクトリ直下のshard.ymlを修正してKemalを

 設定。

% vim shard.yml
 
■kemalをインストールできるように修正。
 
name: example
version: 0.1.0
 
authors:
    - haiju <mail-address>
 
    targets:
       example:
           main: src/example.cr

    dependencies: --- 追加
        kemal: --- 追加
            github: kemalcr/kemal --- 追加
            branch: master --- 追加

 

crystal: 0.20.0 --- defaultは0.19.4だったがsystemの最新を指定してみる

license: MIT

3. Shardsを使って依存パッケージや依存ライブラリをインストール。

% shards install
Updating https://github.com/kemalcr/kemal.git
Updating https://github.com/luislavena/radix.git
Updating https://github.com/jeromegn/kilt.git
Updating https://github.com/RX14/multipart.cr.git
Installing kemal (master)
Installing radix (0.3.5)
Installing kilt (0.3.3)
Installing multipart (0.1.1)

4. 実際にコードを書いてみる。

 というより、むしろ、Kemalのサイトにあるサンプルコードを

 写経してみる。

% vim src/example.cr

require "kemal"

get "/" do

    "Hello, World!"

end

Kemal run

5. 4のコードをビルド。

% crystal build --release src/example.cr

何かエラーが発生している?Kemalがうまく読み込めてないらしい。

Error in src/example.cr:3: while requiring "kemal": can't find file 'kemal' relative to '/home/haiju/workspace/example/src'

require "kemal"

6. crystal env を確認してみる。

% crystal env
CRYSTAL_CACHE_DIR="/home/haiju/.cache/crystal"
CRYSTAL_PATH="/home/haiju/.anyenv/envs/crenv/versions/0.20.0/src:libs"
CRYSTAL_VERSION="0.20.0"

これから先の調べ方がよくわからないので作業中断。

もう少し調べて補足するつもりだけど、他の気になる少し古めのフレームワーク

も全部、相対パスだと読み込めなくて同じエラーだった。

ということは根本的に調べ方がまずいのかもしれない。

もう少し公式ドキュメント周りから攻めて行ってみよう。

という訳で初心者がゴソゴソしてみた現場からは以上になります。

[参考サイト]

github.com

kemalcr.com

github.com

Requiring files · GitBook

github.com

github.com

isucon5q-crystal を公開するまでのメモ · GitHub