是否可以将命令行参数传递给 Rails 3 应用程序?如果一个 Rails 应用程序要为 2 个网站(一个用于汽车,一个用于船只)提供支持,类似于
rails server --site=cars
rails server --site=boats
或
rails server --app-argument=site:cars
这样的事情可能吗?我只能想到在 Bash 中使用
SITE=cars rails server
并在
ENV
中获取它,但命令行参数可能是更优选的方式。
您可能需要类似多阶段环境的东西,据我所知,没有一种简单的方法可以通过命令行传递参数来进行这种切换,而无需一些自定义技巧。
看看:
老问题…… 但仍然很有趣。 我的解决方案是使用 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
毫无用处