将基于Thor的实用程序CLI的binstub添加到Rails应用程序的最佳方法

问题描述 投票:1回答:2

我有一个基于Thor的CLI与Rails应用程序一起使用,在使用thor实现CLI的大量示例中,我没有找到任何可以在bundler上下文中执行的简单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。在'thor/rails'要求my_cli.rb是不够的。

我在问,有没有更好的方法呢?

#!/usr/bin/env ruby
APP_PATH = File.expand_path('../../config/application', __FILE__)
require_relative '../config/boot'
require_relative '../lib/my_cli'
MyCli.start(ARGV)
ruby-on-rails ruby bundler thor
2个回答
0
投票

一点清洁:

#!/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)

0
投票

这似乎工作正常:

#!/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)
© www.soinside.com 2019 - 2024. All rights reserved.