0

我正在尝试编写新 Symfony 2.1 项目的整个安装过程,包括添加和配置我们所有的包及其依赖项。最终结果应该是一个设置所有内容的命令,因此开发人员既被迫进入我们的最佳实践设置,而不必花时间在这上面。

到目前为止,这是相当成功的,因为现在可以在大约一个小时内从 0 转到完全安装的 CMS(主要是由于 composer 安装)。你可以在这里看到结果:https ://github.com/Kunstmaan/KunstmaanSandbox/blob/feature/update-to-2.1/README.md

这个项目的下一个阶段是修改 Symfony 配置 YAML 文件。但在这里我被困住了。

对于 parameters.yml,我使用 ruby​​ 脚本执行此操作,这里是相关的摘录,完整的脚本可以在这里找到:https ://github.com/Kunstmaan/KunstmaanSandbox/blob/feature/update-to-2.1/app /Resources/docs/scripts/sandboxinstaller.rb

parametersymlpath = ARGV[1]
projectname = ARGV[2]
parametersyml = YAML.load_file(parametersymlpath)
params = parametersyml["parameters"]
params["searchport"] = 9200
params["searchindexname"] = projectname
params["sentry.dsn"] = "https://XXXXXXXX:XXXXXXXX@app.getsentry.com/XXXX"
params["cdnpath"] = ""
params["requiredlocales"] = "nl|fr|de|en"
params["defaultlocale"] = "nl"
params["websitetitle"] = projectname.capitalize
File.open(parametersymlpath, 'w') {|f| f.write(YAML.dump(parametersyml)) }

到目前为止一切顺利,但由于以下几行,相同类型的脚本在 config.yml 上失​​败:

imports:
    - { resource: @KunstmaanMediaBundle/Resources/config/config.yml }
    - { resource: @KunstmaanAdminBundle/Resources/config/config.yml }
    - { resource: @KunstmaanFormBundle/Resources/config/config.yml }
    - { resource: @KunstmaanSearchBundle/Resources/config/config.yml }
    - { resource: @KunstmaanAdminListBundle/Resources/config/config.yml }

@ 是根据 YAML 规范的保留字符,Ruby 会抛出错误。

所以我切换到 php 和 Symfony yaml 组件,因为此时安装有一个完整的 symfony 安装,我想出了这个独立的命令:https ://gist.github.com/3526251

但是当读取和转储 config.yml 文件时,例如上面的行会变成

imports:
    - 
      resource: @KunstmaanMediaBundle/Resources/config/config.yml
    - 
      resource: @KunstmaanAdminBundle/Resources/config/config.yml
    - 
      resource: @KunstmaanFormBundle/Resources/config/config.yml
    - 
      resource: @KunstmaanSearchBundle/Resources/config/config.yml
    - 
      resource: @KunstmaanAdminListBundle/Resources/config/config.yml

这看起来像废话,我不完全确定这是否会奏效。

所以此时我正在考虑将完全修改的 config.yml 文件移动到安装脚本并覆盖原件。我宁愿不去那里,因为如果 symfony 标准项目发生变化,它将需要持续维护。

我想知道是否还有其他方法?

4

1 回答 1

1

这两种形式在语义上是等价的。它们分别称为内联块和缩进块。

于 2012-08-30T11:03:52.260 回答