2010-04-20 33 views
1

Coldfusion Report Builder非常棒。Coldfusion Report Builder - 如何在prod/staging/dev之间设置不同的外部数据源?

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

当我们创建报告时,在开发箱中称为MyApp_dev的数据源中说。

我们的其他服务器是生产服务器。它还包含一个分段构建,以确保在我们发布到现场之前一切都顺利进行。 (感谢Al Everett将此澄清引入我的注意。)

当创建报告时,一切正常。

我们将报告部署到我们的登台服务器,该服务器具有MyApp_Staging的数据源。该服务器也可以,也可以不具有MyApp_Live下的实时应用程序。 Ant将更新推向舞台非常棒。

运行报告,崩溃和灼伤。为什么?

看起来报告正在寻找MyApp_Dev data_source,即使应用程序正在使用MyApp_Staging数据源。

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

1)明显:将数据源传递到cfreport标记。在Linux上测试v8或v9时不适用于ColdFusion Builder Reports。

2)到目前为止最现实的选择(但是很痛苦):将查询作为对象传递给ColdFusion Builder报表。让我们来思考一下:

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

3)不太理想。吸取它,并让所有的分期报告跑掉现场服务器。也许将实时数据复制到分段(无结构更改)以使其看起来相似。

有没有雄辩的方法来完成上述?

在此先感谢!

+1

我只是想知道为什么你在不同的服务器上使用不同的数据源名称。我们的政策始终是使用相同的DSN,指向不同的数据库进行开发,分期和生活。 – 2010-04-21 15:43:28

+0

我们必须在我们的实时服务器上使用2个数据源名称,当我们对其进行暂存和实时安装时。 – 2010-05-06 17:33:06

回答

0

如果你有不同的dev/staging/production盒子,为什么不在每个盒子上使用相同的数据源名称呢?这会让你从代码中找出它的位置。

因为我当前任务中的安全问题阻碍了我使用RDS,所以我使用选项2作为理所当然的事情。我也喜欢它,因为它更容易调试。

+0

开箱通常与分段/生产箱分开。对于较小的项目,我们通常在生产服务器上运行单独的应用程序实例,然后再滚动以确保没有障碍。 – 2010-04-21 15:03:19