我正在关注bundler documentation中的宝石指南。
当我到达命令行部分,我必须在可执行文件上要求'foodie / cli'时,我不断收到错误。
/Users/suyesh/.rbenv/versions/2.3.3/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- foodie/cli (LoadError)
from /Users/suyesh/.rbenv/versions/2.3.3/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from exe/foodie:2:in `<main>'
这是我在可执行文件中的代码
#!/usr/bin/env ruby
require 'foodie/cli'
Foodie::CLI.start
这是我的cli,位于lib / foodie / cli.rb
require 'thor'
require 'foodie'
module Foodie
class CLI < Thor
desc "portray ITEM", "Determines if a piece of food is gross or sdeliciour."
def portray(name)
puts Foodie::Food.portray(name)
end
end
end
我做错了什么?
答案 0 :(得分:0)
根据您调用可执行文件的方式以及路径的设置方式,它应该有效(tm)。
在您的开发环境中使用bundle exec path/to/my/executable
(假设您正在编写宝石 - 这几乎总是一个好主意)。如果你按照Bundler教程中的其他步骤进行操作,我相信你应该有一个gemspec文件告诉bundler在哪里寻找([lib /] foodie / cli.rb)。
使用ruby -Iinc/lude/dir/for/example/lib path/to/my/executable
告诉您的ruby(暂时)也在目录inc/lude/dir/for/example/lib
中查找源文件(在您的情况下是foodie / cli.rb)。既然你正在学习捆绑器,不要使用这种方法,但它可能会让其他人感兴趣,并且在lib-,load-和include-paths存在的区域中投入一些亮点。