rails 4: Errno::ENOENT (没有这样的文件或目录@ rb_sysopen - /assets/
rails 4: Errno::ENOENT (No such file or directory @ rb_sysopen - /assets/
我刚刚将我的应用程序部署到 heroku,但我在尝试读取一些资产时遇到了很多问题。
我正在尝试从多个文件中动态加载一些 css,然后通过一些更改重新编译它们。不断中断的行是第一个文件加载:
@css_asset_bootstrap = File.open(ActionController::Base.helpers.asset_path('bootstrap.css'), "r").read
生成此错误:
2015-04-07T23:30:50.098831+00:00 app[web.1]: Errno::ENOENT (No such file or directory @ rb_sysopen - /assets/bootstrap-2d25733981c30e34bd9aa0fb75388f08.css):
我尝试了很多方法,包括将我的所有资产移至 aws cloudfront。有办法解决这个问题吗?在开发环境中完美运行。
只是为了确认几件事。我已经成功预编译并上传了文件。正如我在
中看到的那样,该文件肯定存在
heroku run bash
cd /public/assets/
我把资产移到cloudfront的时候也能看到
谢谢。
编辑 1:
不确定这是否是重要信息,但有了云端文件,我可以 运行 heroku 运行 bash 在 heroku 上启动 shell 会话。那么我可以:
curl http://xxx.cloudfront.net/assets/bootstrap-2d25733981c30e34bd9aa0fb75388f08.css
获取文件成功。我在想这可能是一个权限错误,但一切都设置为 public 并且从 heroku 到 aws 服务器似乎都可以正常工作。
您是从相对路径请求文件,这可能并不总是有效。尝试绝对:
@css_asset_bootstrap = File.open(Rails.root + ActionController::Base.helpers.asset_path('bootstrap.css'), "r").read
另一个可能更大的问题是 Heroku 有一个临时文件系统,因此当 dyno 被剔除时,您写入的任何更改都可以随时被删除。
在我的例子中,使用虚拟机 Rails.root
给我这个:'/home/vagrant/projects/.../my-nice-app'
什么是完全不酷的。
我改用 request.url
给我:'http://localhost:3000/
' 这正是我想要的。
我刚刚将我的应用程序部署到 heroku,但我在尝试读取一些资产时遇到了很多问题。
我正在尝试从多个文件中动态加载一些 css,然后通过一些更改重新编译它们。不断中断的行是第一个文件加载:
@css_asset_bootstrap = File.open(ActionController::Base.helpers.asset_path('bootstrap.css'), "r").read
生成此错误:
2015-04-07T23:30:50.098831+00:00 app[web.1]: Errno::ENOENT (No such file or directory @ rb_sysopen - /assets/bootstrap-2d25733981c30e34bd9aa0fb75388f08.css):
我尝试了很多方法,包括将我的所有资产移至 aws cloudfront。有办法解决这个问题吗?在开发环境中完美运行。
只是为了确认几件事。我已经成功预编译并上传了文件。正如我在
中看到的那样,该文件肯定存在heroku run bash
cd /public/assets/
我把资产移到cloudfront的时候也能看到
谢谢。
编辑 1: 不确定这是否是重要信息,但有了云端文件,我可以 运行 heroku 运行 bash 在 heroku 上启动 shell 会话。那么我可以:
curl http://xxx.cloudfront.net/assets/bootstrap-2d25733981c30e34bd9aa0fb75388f08.css
获取文件成功。我在想这可能是一个权限错误,但一切都设置为 public 并且从 heroku 到 aws 服务器似乎都可以正常工作。
您是从相对路径请求文件,这可能并不总是有效。尝试绝对:
@css_asset_bootstrap = File.open(Rails.root + ActionController::Base.helpers.asset_path('bootstrap.css'), "r").read
另一个可能更大的问题是 Heroku 有一个临时文件系统,因此当 dyno 被剔除时,您写入的任何更改都可以随时被删除。
在我的例子中,使用虚拟机 Rails.root
给我这个:'/home/vagrant/projects/.../my-nice-app'
什么是完全不酷的。
我改用 request.url
给我:'http://localhost:3000/
' 这正是我想要的。