ruby-on-rails 向Rails应用程序传递应用程序特定的命令行参数(当启动服务器时)?

qacovj5a  于 2023-10-21  发布在  Ruby
关注(0)|答案(2)|浏览(133)

可以将命令行参数传递给Rails 3应用程序吗?如果一个Rails应用程序要支持两个网站(一个用于汽车,一个用于船只),

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

rails server --app-argument=site:cars

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

SITE=cars rails server

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

9gm1akwq

9gm1akwq1#

你可能需要一个多阶段的环境,AFAIK没有一个简单的方法来通过命令行传递参数来做这种切换,而不需要一些自定义的技巧。
看看:

iqjalb3h

iqjalb3h2#

老问题,但仍然很有趣。我的解决方案是使用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: false
    end
end

所以我在thor中加入了一个类选项--但只针对action server(或s)。所以托尔需要的时候就拿走了。
这可以防止Rails(如果是服务器命令)抱怨参数--instance-number
后来-在需要的时候,我不得不质疑这样的选择:

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

拯救只是旧的Rails 3环境,其中instance_number是无用的

相关问题