如何分发 crystal-lang 可执行文件
Howto distribute crystal-lang executable
你好Crystal牧师,
我在 fedora26 上的开发虚拟机 运行ning crystal 0.23.1 上构建了一个应用程序 snob。在当地 运行 没问题。这是一个发布版本。我将应用程序复制到我的主机 fedora27,并尝试 运行 它,我收到一个错误抱怨 shard.yml。在我的任何一台 centos 机器上都会发生同样的情况。错误:
Error opening file
'/vagrant/Projects/crystal/snob/src/snob/../../shard.yml' with mode 'r': No such file or directory (Errno)
Failed to raise an exception: END_OF_STACK
[0x40e807] __crystal_raise +375
[0x411f05] ???
[0x41f595] ???
[0x417291] ???
[0x41611a] ???
[0x42d37a] main +7914
[0x7f8783b5100a] __libc_start_main +234
[0x40e2da] _start +42
[0x0] ???
我错过了什么?我的印象是这是一个独立的可执行文件。再多的挠头或谷歌搜索也找不到任何结果。
提前感谢任何可以帮助我的人。同时,我还在寻找。
我在 version.cr 中的源代码:
VERSION = begin
YAML.parse(File.join(__DIR__, "../..", "shard.yml")))["version"].as_s
end
我试图将版本保留在一个地方以便在开发过程中进行更新,但无意中引入了一个不需要的错误。我的应用现在依赖于 shard.yml 位于我路径中的某处。哎哟!将 VERSION 常量更改为文字字符串 "x.x.x" 并重建解决了该问题。我的来源位于 https://github.com/lebogan/snob.git.
感谢@Eric Platon 的发帖建议。
有了 Crystal v0.24.1 和 Shards v0.7.2,我现在可以使用以下方法将版本保存在一个地方:
VERSION = {{ `shards version #{__DIR__}`.chomp.stringify }}
这解决了我在上面创建的问题。
你好Crystal牧师,
我在 fedora26 上的开发虚拟机 运行ning crystal 0.23.1 上构建了一个应用程序 snob。在当地 运行 没问题。这是一个发布版本。我将应用程序复制到我的主机 fedora27,并尝试 运行 它,我收到一个错误抱怨 shard.yml。在我的任何一台 centos 机器上都会发生同样的情况。错误:
Error opening file
'/vagrant/Projects/crystal/snob/src/snob/../../shard.yml' with mode 'r': No such file or directory (Errno)
Failed to raise an exception: END_OF_STACK
[0x40e807] __crystal_raise +375
[0x411f05] ???
[0x41f595] ???
[0x417291] ???
[0x41611a] ???
[0x42d37a] main +7914
[0x7f8783b5100a] __libc_start_main +234
[0x40e2da] _start +42
[0x0] ???
我错过了什么?我的印象是这是一个独立的可执行文件。再多的挠头或谷歌搜索也找不到任何结果。
提前感谢任何可以帮助我的人。同时,我还在寻找。
我在 version.cr 中的源代码:
VERSION = begin
YAML.parse(File.join(__DIR__, "../..", "shard.yml")))["version"].as_s
end
我试图将版本保留在一个地方以便在开发过程中进行更新,但无意中引入了一个不需要的错误。我的应用现在依赖于 shard.yml 位于我路径中的某处。哎哟!将 VERSION 常量更改为文字字符串 "x.x.x" 并重建解决了该问题。我的来源位于 https://github.com/lebogan/snob.git.
感谢@Eric Platon 的发帖建议。
有了 Crystal v0.24.1 和 Shards v0.7.2,我现在可以使用以下方法将版本保存在一个地方:
VERSION = {{ `shards version #{__DIR__}`.chomp.stringify }}
这解决了我在上面创建的问题。