将基于 thor 的实用程序 CLI 的 binstub 添加到 Rails 应用程序的最佳方法
Best way to add binstub of thor-based utility CLI to Rails app
我有一个基于 thor 的 CLI 与 Rails 应用程序一起使用,在使用 thor 实现 CLI 的众多示例中,我没有找到任何可以执行的简单 binstub 示例在捆绑器的上下文中。
我希望能够像这样从命令行调用 my_cli
:
$ my_cli do something
我不想:
$ BUNDLE_GEMFILE=/path/to/Gemfile/of/Rails/app bundle exec my_cli
我不想:
$ thor do something
以下 binstub 有效。我必须要求 ../config/boot
。在 my_cli.rb
中要求 'thor/rails'
是不够的。
我在问,有没有更好的方法来做到这一点?
#!/usr/bin/env ruby
APP_PATH = File.expand_path('../../config/application', __FILE__)
require_relative '../config/boot'
require_relative '../lib/my_cli'
MyCli.start(ARGV)
这似乎工作正常:
#!/usr/bin/env ruby
ENV['BUNDLE_GEMFILE'] = '/opt/myRailsApp/Gemfile'
ENV['RAKEOPT'] = "--silent"
ENV['RAILS_ENV'] ||= 'production'
APP_PATH = '/opt/myRailsApp/config/application'
require 'rubygems'
require 'bundler/setup'
require '/opt/myRailsApp/config/environment.rb'
require '/opt/myRailsApp/lib/my_cli'
MyCli.start(ARGV)
清洁一点:
#!/usr/bin/env ruby
ENV['BUNDLE_GEMFILE'] = File.absolute_path(File.join(__dir__, '../Gemfile'))
ENV['RAKEOPT'] = "--silent"
ENV['RAILS_ENV'] ||= 'development'
APP_PATH = File.absolute_path(File.join(__dir__, '../config/application.rb'))
require 'rubygems'
require 'bundler/setup'
require_relative '../config/environment'
require 'my_cli'
MyCli.start(ARGV)
我有一个基于 thor 的 CLI 与 Rails 应用程序一起使用,在使用 thor 实现 CLI 的众多示例中,我没有找到任何可以执行的简单 binstub 示例在捆绑器的上下文中。
我希望能够像这样从命令行调用 my_cli
:
$ my_cli do something
我不想:
$ BUNDLE_GEMFILE=/path/to/Gemfile/of/Rails/app bundle exec my_cli
我不想:
$ thor do something
以下 binstub 有效。我必须要求 ../config/boot
。在 my_cli.rb
中要求 'thor/rails'
是不够的。
我在问,有没有更好的方法来做到这一点?
#!/usr/bin/env ruby
APP_PATH = File.expand_path('../../config/application', __FILE__)
require_relative '../config/boot'
require_relative '../lib/my_cli'
MyCli.start(ARGV)
这似乎工作正常:
#!/usr/bin/env ruby
ENV['BUNDLE_GEMFILE'] = '/opt/myRailsApp/Gemfile'
ENV['RAKEOPT'] = "--silent"
ENV['RAILS_ENV'] ||= 'production'
APP_PATH = '/opt/myRailsApp/config/application'
require 'rubygems'
require 'bundler/setup'
require '/opt/myRailsApp/config/environment.rb'
require '/opt/myRailsApp/lib/my_cli'
MyCli.start(ARGV)
清洁一点:
#!/usr/bin/env ruby
ENV['BUNDLE_GEMFILE'] = File.absolute_path(File.join(__dir__, '../Gemfile'))
ENV['RAKEOPT'] = "--silent"
ENV['RAILS_ENV'] ||= 'development'
APP_PATH = File.absolute_path(File.join(__dir__, '../config/application.rb'))
require 'rubygems'
require 'bundler/setup'
require_relative '../config/environment'
require 'my_cli'
MyCli.start(ARGV)