Coldfusion Report Builder - 如何在prod / staging / dev之间设置不同的数据源?

时间:2010-04-20 20:43:16

标签: coldfusion datasource reportbuilder

Coldfusion Report Builder很棒。

一个小问题。我们使用ANT + CFANT进行部署。

当我们创建报告时,请在开发框中名为MyApp_dev的数据源中说明。

我们的其他服务器是生产服务器。它还包含一个暂存构建,以确保在我们发布到live之前一切顺利。 (感谢Al Everett引起我的注意。)

创建报告时,一切都很有效。

我们将报告部署到我们的登台服务器,该服务器的数据源为MyApp_Staging。该服务器也可能会或可能不会在MyApp_Live下运行实时应用程序。 Ant将更新推送到Staging非常棒。

运行报告,崩溃并烧伤。为什么?

即使应用程序正在使用MyApp_Staging数据源,报告似乎也在寻找MyApp_Dev data_source。

在挖掘中我发现了一些方法,我想从头开始做这一个,最后的,理想的方式,而不是在我有一个新的Aha时不得不回去做几十个不同的报告!时刻。

1)明显:将数据源传入 cfreport 标记。对于从v8开始的ColdFusion Builder Reports或在Linux上测试的v9不起作用。

2)到目前为止最实际的选项(但很痛苦):将查询作为对象传递到ColdFusion Builder报告中。让我们考虑一下:

  1. 使用我本地方框中的RDS等创建包含报告构建器的报告。
  2. 当我完成后,将查询复制到一段代码中,或者复制到数据库列中,以便在运行时使用正确的数据源动态注入。
  3. 修改我的“运行报告”事件以从数据库列中查找查询,将其插入到另一个动态cfquery中并可能...评估(!?!)它?有趣的是,我可以将cfquery数据源设置为我需要的每个环境。
  4. 当我在CF Report Builder中修改报告的列时,我总是要更新数据库中的查询。是否有一段代码可以为我提取? HMM。
  5. 3)不太理想。将其解压缩,让分段中的所有报告都从实时服务器上运行。也许将实时数据复制到暂存(没有结构变化)让它看起来相似。

    是否有任何雄辩的方法来实现上述目标?

    提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您有不同的dev / staging / production box,为什么不在每个上使用相同的数据源名称呢?这样可以避免让代码弄清楚它在哪里。

由于我当前任务的安全问题使我无法使用RDS,因此我当然使用选项2。我也喜欢它,因为它更容易调试。