将应用程序特定的命令行参数传递给Rails应用程序(启动服务器时)?

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

是否可以将命令行参数传递给 Rails 3 应用程序?如果一个 Rails 应用程序要为 2 个网站(一个用于汽车,一个用于船只)提供支持,类似于

 rails server --site=cars
 rails server --site=boats

 rails server --app-argument=site:cars

这样的事情可能吗?我只能想到在 Bash 中使用

 SITE=cars rails server

并在

ENV
中获取它,但命令行参数可能是更优选的方式。

ruby-on-rails ruby-on-rails-3
2个回答
1
投票

您可能需要类似多阶段环境的东西,据我所知,没有一种简单的方法可以通过命令行传递参数来进行这种切换,而无需一些自定义技巧。

看看:


0
投票

老问题…… 但仍然很有趣。 我的解决方案是使用 Thor(在 Rails 7 中)……这是一个老问题。

我想要/需要 Rails 服务器的“instance_number”

boot.rb
我放了

require 'thor'
if ARGV[0]=="s" || ARGV[0]=="server" #we won't pollute all commands
    class Thor
        # put your parameters here, as you can find in thor documents
        class_option :instance_number, type: :numeric, required: true
    end
end

所以我在 thor 中添加了一个类选项 - 但仅适用于动作服务器(或多个)。所以托尔根据需要接受它。

这可以防止 Rails(如果是服务器命令)抱怨参数

--instance-number

稍后 - 在需要的地方,我必须对这样的选项提出疑问:

...
instance = Rails::Command::ServerCommand.new([], ARGV).options[:instance_number] rescue 0
...

救援仅适用于旧的 Rails 3 环境,其中

instance_number
毫无用处

© www.soinside.com 2019 - 2024. All rights reserved.