配置开发和生产中的路径

时间:2016-10-19 01:46:35

标签: ruby-on-rails ruby amazon-web-services pdf

我有一个应用程序,让用户可以下载行程,如果他们喜欢第一页的预览。为了进行预览,我使用PDF Reader解析原始文档并创建第一页的PDF版本。

在开发过程中,原始行程存储在公共文件夹中。

@itin_preview = itinerary
reader = PDF::Reader.new("public/#{@itin_preview/document_file_name}")
formatted_page = reader.page(1)
formatted_text = formatted_page.text.gsub! /\s+/, ''
page_text = formatted_text.gsub!(/$/, "\n")

此返回public/itinerary.pdf。但是,在生产中,行程存储在Amazon AWS上,因此我尝试在YAML文件中配置具有不同路径的初始化程序,用于开发和生成,取自here

config.rb

APP_CONFIG = YAML.load_file("#{Rails.root}/config/initializers/config.yml")

config.yml

development:
  itinerary_path: /public/#{@itin_preview.document_file_name}
production:
  itinerary_path: <%= asset_path "#{@itin_preview.document_file_name}" %>

当我将常量输入到我的PDF阅读器中时,

reader = PDF::Reader.new(APP_CONFIG[Rails.env]['itinerary_path'])

我收到以下错误:

Completed 500 Internal Server Error in 19ms (ActiveRecord: 1.3ms)

ArgumentError (input must be an IO-like object or a filename):

我已经仔细检查APP_CONFIG[Rails.env]['itinerary_path']在开发中吐出public/itinerary.pdf。那么为什么它作为字符串工作而不是作为常量?

我怎样才能让它发挥作用?

0 个答案:

没有答案