我有一个名为foo.rb的Ruby脚本,我想在Maple环境的上下文中运行它。怎么做?bundle exec foo.rb不工作,因为exec需要shell脚本。
bundle exec foo.rb
sqyvllje1#
将脚本名称传递给ruby命令:
ruby
bundle exec ruby [script_file_name]
如果你也想要Rails环境:
bundle exec rails runner [script_file_name]
yyyllmsg2#
例如,我想使用相同版本的Rubocop作为我的Rails应用程序,而不是最新的系统应用程序,所以在脚本中这样做:
require 'bundler' Bundler.require # ...
允许我使用我的应用程序的rubocop版本。
brccelvz3#
如果你想创建一个可以在项目中的bundle上下文中运行的脚本,你可以通过编程方式调用Bundler。例如,给定一个项目:
foo ├── Gemfile └── bar └── baz.rb
你可以在baz.rb的顶部放置以下代码,以便给予它访问Gemfile中的gem的权限:
baz.rb
#!/usr/bin/env ruby ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) require 'bundler/setup' # ...etc.
这样,您就可以直接调用脚本,而无需使用bundle exec,也不必从项目目录中调用它。
bundle exec
2admgd594#
你可以把它变成一个脚本- add
#!/usr/bin/env ruby
到文件的开头,并使其可执行。然后bundle exec foo.rb将按预期工作。(This是在unix或OSX上-不确定Windows)请访问http://bundler.io/v1.15/man/bundle-exec.1.html#Loading另请参阅https://coderwall.com/p/kfyzcw/execute-ruby-scripts-directly-without-bundler-exec,了解如何在不需要bundle exec的情况下运行捆绑依赖项的ruby脚本
4条答案
按热度按时间sqyvllje1#
将脚本名称传递给
ruby
命令:如果你也想要Rails环境:
yyyllmsg2#
例如,我想使用相同版本的Rubocop作为我的Rails应用程序,而不是最新的系统应用程序,所以在脚本中这样做:
允许我使用我的应用程序的rubocop版本。
brccelvz3#
如果你想创建一个可以在项目中的bundle上下文中运行的脚本,你可以通过编程方式调用Bundler。例如,给定一个项目:
你可以在
baz.rb
的顶部放置以下代码,以便给予它访问Gemfile中的gem的权限:这样,您就可以直接调用脚本,而无需使用
bundle exec
,也不必从项目目录中调用它。2admgd594#
你可以把它变成一个脚本- add
到文件的开头,并使其可执行。然后
bundle exec foo.rb
将按预期工作。(This是在unix或OSX上-不确定Windows)
请访问http://bundler.io/v1.15/man/bundle-exec.1.html#Loading
另请参阅https://coderwall.com/p/kfyzcw/execute-ruby-scripts-directly-without-bundler-exec,了解如何在不需要
bundle exec
的情况下运行捆绑依赖项的ruby脚本