我有以下目录结构:
|-app
|-config
|---puma
|-----base.rb
|-----development.rb
|-----production.rb
保持development.rb
& production.rb
干,我在每个文件的顶部添加了require_relative 'base'
。 base.rb
包含两种环境共有的配置。
但是,foreman start
退出时出现此错误:
base.rb:1:in `<top (required)>': undefined method `workers' for main:Object (NoMethodError)
development.rb:1:in `require_relative'
答案 0 :(得分:1)
import
directive was added to the config file for Puma 3.1.0。
将require_relative 'base'
替换为eval(File.read(File.join(File.dirname(__FILE__), 'base.rb')))
。
要load your config file, Puma对其内容进行instance_eval。因此,配置文件中的配置方法将在Puma::DSL
对象上调用。
但是,“需要将文件加载到全局命名空间而不是
进入调用代码“(require in instance_eval)的范围。因此,使用require_relative
会导致base.rb
中的配置方法在main:Object
而不是Puma::DSL
上调用对象,因此错误。
也许Puma可以为他们的DSL添加方法(可能称为import
&amp; import_relative
),这使得这种方法变得更容易。清洁剂。