【问题标题】:Coldfusion Report Builder - How can you set different datasources externally between prod/staging/dev?Coldfusion Report Builder - 如何在 prod/staging/dev 之间从外部设置不同的数据源?
【发布时间】:2010-04-20 20:43:16
【问题描述】:

Coldfusion 报表生成器很棒。

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

当我们创建报告时,比如说在开发盒上名为 MyApp_dev 的数据源中。

我们的另一台服务器是生产服务器。它还包含一个临时构建,以确保在我们发布之前一切顺利。 (感谢 Al Everett 提醒我注意这一点。)

创建报表后一切正常。

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

运行报告,崩溃和烧毁。为什么?

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

在四处挖掘中,我找到了一些方法,我想从一开始就做这个,最终的,理想的方法,而不是当我有一个新的 Aha 时不得不回去做几十个不同的报告!时刻。

1) 明显:将数据源传入cfreport标签。不适用于从 v8 开始的 ColdFusion Builder 报告,或在 Linux 上测试的 v9。

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

  1. 使用我的本地机器上的 RDS 等,使用报告生成器创建报告。
  2. 完成后,将查询复制到代码的 sn-p 或数据库列中,以便在运行时动态注入正确的数据源。
  3. 修改我的“运行报告”事件以从数据库列中查找查询,将其插入另一个动态 cfquery 并可能...评估(!?!)它?有趣的是,我可以将 cfquery 数据源设置为每个环境所需的数据。
  4. 当我在 CF Report Builder 中修改报表的列时,我总是需要更新数据库中的查询。是否有可以为我提取此代码的 sn-p 代码?嗯。

3) 不太理想。收起它,让所有暂存报告在实时服务器上运行。也许将实时数据复制到暂存(无结构更改)以使其看起来相似。

有没有什么雄辩的方法来完成以上的?

提前致谢!

【问题讨论】:

  • 我只是想知道为什么您在不同的服务器上使用不同的数据源名称。我们的政策一直是使用相同的 DSN,指向不同的数据库进行开发、登台和直播。
  • 当我们在其上进行暂存和实时安装时,我们必须在实时服务器上使用 2 个数据源名称。

标签: coldfusion datasource reportbuilder


【解决方案1】:

如果您有不同的开发/暂存/生产框,为什么不在每个上使用相同的数据源名称?这样你就不用让代码弄清楚它在哪里了。

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

【讨论】:

  • 开发箱通常与登台/生产箱分开。对于较小的项目,我们通常会在上线之前在生产服务器上运行一个单独的应用实例,以确保没有障碍。
猜你喜欢
  • 2012-02-10
  • 2022-01-16
  • 1970-01-01
  • 2019-04-15
  • 1970-01-01
  • 2014-02-08
  • 1970-01-01
  • 2018-06-18
  • 2020-01-04
相关资源
最近更新 更多