Puma config.rb需要

时间:2016-03-02 02:51:18

标签: config require puma

我有以下目录结构:

|-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'

1 个答案:

答案 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),这使得这种方法变得更容易。清洁剂。