Sinatra風の超高速マイクロフレームワーク - Kemal:事始めこの記事の通りKemalを使ってみようとしたのですが、2つエラーが出てしまったのでそれのメモです。
mimeが見当たらないエラー
まず1つ目ですが、なぜかmimeがrequireできないという↓のようなエラーが出ていました。
crystal build --release src/crystal-nopaste.cr
Error in src/crystal-nopaste.cr:8: while requiring "kemal"
require "kemal"
^
in lib/kemal/src/kemal.cr:6: while requiring "./kemal/helpers/*"
require "./kemal/helpers/*"
^
in lib/kemal/src/kemal/helpers/helpers.cr:1: while requiring "mime": can't find file 'mime'
If you're trying to require a shard:
- Did you remember to run `shards install`?
- Did you make sure you're running the compiler in the same directory as your shard.yml?
require "mime"
^
この為、shard.ymlのdependencies
にmimeのライブラリを追加しました。
dependencies:
kemal:
github: sdogruyol/kemal
branch: master
mime:
github: icyleaf/mime.cr
libsslが見つからないエラー
2つ目のエラーはlibsslが見つからないという以下のようなエラーでした。 opensslはbrewでインストールしていたのですがなぜか見つからないと言われてしまっていました。
$ crystal build src/crystal-nopaste.cr
ld: library not found for -lssl (this usually means you need to install the development package for libssl)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Error: execution of command failed with code: 1: `cc "${@}" -o '/Users/goki/Documents/app/crystal-nopaste/crystal-nopaste' -rdynamic `command -v pkg-config > /dev/null && pkg-config --libs --silence-errors libssl || printf %s '-lssl -lcrypto'` `command -v pkg-config > /dev/null && pkg-config --libs --silence-errors libcrypto || printf %s '-lcrypto'` -lpcre -lgc -lpthread /Users/goki/.anyenv/envs/crenv/versions/0.25.1/src/ext/libcrystal.a -levent -liconv -ldl -L/usr/lib -L/usr/local/lib`
これには、LIBRARY_PATHを追加することで解決しました。
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/