【问题标题】:Best way to add binstub of thor-based utility CLI to Rails app将基于 thor 的实用程序 CLI 的 binstub 添加到 Rails 应用程序的最佳方法
【发布时间】:2016-04-09 03:22:47
【问题描述】:

我有一个与 Rails 应用程序一起使用的基于 thor 的 CLI,在使用 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。在 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)

【问题讨论】:

    标签: ruby-on-rails ruby bundler thor


    【解决方案1】:

    干净一点:

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

    【讨论】:

      【解决方案2】:

      这似乎工作正常:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-10
        • 1970-01-01
        • 2013-07-13
        • 2021-03-05
        • 2018-04-06
        • 2010-11-07
        • 1970-01-01
        相关资源
        最近更新 更多