Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在rvm中切换Ruby版本时Ruby命令行工具崩溃_Ruby_Command Line Interface - Fatal编程技术网

在rvm中切换Ruby版本时Ruby命令行工具崩溃

在rvm中切换Ruby版本时Ruby命令行工具崩溃,ruby,command-line-interface,Ruby,Command Line Interface,我正在尝试用ruby制作一个CLI工具。 我的工具需要一些捆绑库(log4r,…)。所以当我切换ruby版本(2.0.0->2.1.2)或者切换gemset时,问题就出现了,一些gem并没有安装在新的ruby环境中。 那么,我如何才能让我的应用程序像Wagrant一样工作,在我使用的每一个ruby版本中都能工作?如果你将你的应用程序打包为Gem,你可以包含一个描述你的应用程序的Gemspec。你可以指定的一件事是;当用户运行gem install myapp时,gem命令将确保它包含您指定的所有

我正在尝试用ruby制作一个CLI工具。 我的工具需要一些捆绑库(log4r,…)。所以当我切换ruby版本(2.0.0->2.1.2)或者切换gemset时,问题就出现了,一些gem并没有安装在新的ruby环境中。
那么,我如何才能让我的应用程序像Wagrant一样工作,在我使用的每一个ruby版本中都能工作?

如果你将你的应用程序打包为Gem,你可以包含一个描述你的应用程序的Gemspec。你可以指定的一件事是;当用户运行
gem install myapp
时,
gem
命令将确保它包含您指定的所有内容(如log4r)


如果没有Rubygems,这将很难实现。您可以将您的应用程序与定义的Ruby版本及其所有需求打包在一起,但这会使您的应用程序下载量更大,意味着您需要维护的内容更多。如果你想在整个系统范围内安装你的应用程序,并让它在每一个Ruby环境下运行,这将是一项艰巨的工作。最好让
gem
应用程序安装您的应用程序(无论是全系统还是通过/),并让它为您管理依赖关系。有一个和来帮助管理这个

Vagrant是一种预先包装的应用程序。它打包了ruby的版本,它的宝石依赖性和所有东西。问题是因为我是从rbenv/rvm安装ruby的,我的应用程序只能在这个版本的ruby和gemset上使用(比如说2.1.2,默认的gemset)。所有依赖项宝石,如log4r、thor。。。安装在/Users/guest/.rvm/gems/ruby-2.1.2中。所以,如果我切换ruby版本,我的应用程序会崩溃,因为在新的ruby环境中,log4r和thor没有安装Yep-但是如果你使用的是rbenv/rvm,那么如果你切换到没有应用程序的环境,你的应用程序应该根本不可用。您可以将默认Gemset与rbenv/rvm结合使用,这样可以帮助您在Ruby版本之间切换,而无需记住在每个版本上安装应用程序——我在原始答案中添加了一些内容来反映这一点。