我们有一个Sinatra应用程序和一个Backbone应用程序。
我看到了Sharing the same codebase across multiple apps,但我不理解它或如何实现它。
这个问题并非真正针对Sinatra或Backbone;它几乎可以是任何应用程序。使用Heroku和Git
一个想法是将HTML放在S3上,但我们没有使用S3来存储HTML。你如何从Git进入S3?这看起来很复杂。
那么,是否有一种在应用程序之间共享HTML模板的好方法?
答案 0 :(得分:2)
我们通过拥有一个包含父目录,定义良好的公共文件路径,并使用一个通用的YAML文件来告诉不同的应用程序在哪里查看。
创建一个包含Hash的公共YAML文件,其中的键是特定资源或资源路径的公用名,值是磁盘上的绝对路径。
例如:
---
html: /absolute/path/to/shared/html
images: /absolute/path/to/shared/images
main_css: /absolute/path/to/shared/styles.css
使用Ruby加载:
require 'yaml'
SHARED_RESOURCES = YAML.load_file('/absolute/path/to/shared_resources.yaml')
# => {"html"=>"/absolute/path/to/shared/html", "images"=>"/absolute/path/to/shared/images", "main_css"=>"/absolute/path/to/shared/styles.css"}
使用生成的SHARED_RESOURCES
哈希来检索所需的信息:
main_css = SHARED_RESOURCES['main_css']
# => "/absolute/path/to/shared/styles.css"
您可以使用 ANY 语言中可以读取YAML的相同YAML文件,也可以打开该文件并解析其内容。此时,所有代码库都可以播放同一张音乐,并且知道如何在必要时访问公共文件。
例如,来自Perl:
use YAML;
$SHARED_RESOURCES = Load('
---
html: /absolute/path/to/shared/html
images: /absolute/path/to/shared/images
main_css: /absolute/path/to/shared/styles.css
');
print $SHARED_RESOURCES->{'main_css'}, "\n";
>> /absolute/path/to/shared/styles.css
如果您想获得更好的感觉,请使用数据库来保存这些共享资源。无论哪种方式,想法都是代码只有一个地方可以查找特定的资源/文件。