我有一个应用程序,让用户可以下载行程,如果他们喜欢第一页的预览。为了进行预览,我使用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
。那么为什么它作为字符串工作而不是作为常量?
我怎样才能让它发挥作用?