Rails 3.1 资源在服务器重新启动之前无法识别 rmagick 上传的新图像

2024-05-01

我有我的Rails 3.1.0应用程序运行passenger in production环境,我有一个部分,应用程序允许用户更改他的个人资料图片,因此我使用 ajax 上传器上传图像,在我的控制器中,我上传文件并使用 rmagick 为图像生成不同的大小,然后使用 rmagick 渲染新图像一个image_tag但在我重新启动服务器之前,应用程序不会显示图像。

我得到的是No route matches [GET] "assets/path/to/image.png"

如果我重新启动服务器,它将显示图像,但显然我不能每次用户上传新图像时都重新启动服务器。

如何解决保持资产正常运转的问题?


Rails 资产管道实际上适用于结构/设计图像,例如背景、图标、横幅等。)动态资产应该放在公共目录中[来源如下]

通过 Nginx 或 Apache 或任何 Web 服务器提供静态资源可能是个好主意,或者将它们放在 Rails 应用程序的公共目录中。

那应该可以解决你的问题......例如为静态资源创建一个单独的路径,您可以使用 rmagick / Carrierwave 或任何您喜欢的 gem 将这些图像上传到其中。

资产管道仅了解启动期间存在的图像。因此,将静态/上传的资源分离到一个单独的目录中,并直接通过网络服务器提供服务,将会有所帮助——它也应该更快。

你的配置中需要这样的东西:

# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false

# Compress JavaScripts and CSS
config.assets.compress = true

# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false

# Generate digests for assets URLs
config.assets.digest = true

# UNCOMMENT the header that your server uses for sending files
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx

更一般:

http://railscasts.com/episodes/279-understanding-the-asset-pipeline http://railscasts.com/episodes/279-understanding-the-asset-pipeline

http://guides.rubyonrails.org/asset_pipeline.html http://guides.rubyonrails.org/asset_pipeline.html

Rails 3.1:文件上传是否应该添加到资产管道中? https://stackoverflow.com/questions/7391938/rails-3-1-should-file-uploads-be-added-to-asset-pipeline

关于在资产管道之外提供图像:

http://mrjaba.posterous.com/rails-31-asset-pipeline-with-nginx-and-passen http://mrjaba.posterous.com/rails-31-asset-pipeline-with-nginx-and-passen

http://trackingrails.com/posts/rails-31-and-asset-pipeline-problems-with-apache http://trackingrails.com/posts/rails-31-and-asset-pipeline-problems-with-apache

http://pastebin.com/kC4Ba40U http://pastebin.com/kC4Ba40U

https://github.com/defunkt/resque/issues/418 https://github.com/defunkt/resque/issues/418

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 3.1 资源在服务器重新启动之前无法识别 rmagick 上传的新图像 的相关文章

  • Rails 3.1 需要在索引页面上进行就地编辑

    我有一个带有自由格式评论字段的索引页 Comment 字段是另一个不相关的模型的一部分 长话短说 一部分是我 一部分是用户 我需要弄清楚的是用什么来做到这一点 我遇到了 Best In Place 的问题 here https stacko
  • 如何创建弹出窗口以在rails 3中创建新记录

    我们有一个要求 网页显示连接几个表的所有记录 我们有一个 添加按钮 单击该按钮后 我必须显示一个弹出窗口 用户将在其中输入必要的详细信息 弹出窗口将有两个按钮 保存 和 取消 单击 保存 按钮 应验证字段 如果所有验证均通过 则将记录保存到
  • Rails 3.1 中的无表模型

    好像this http railscasts com episodes 193 tableless model该方法在 Rails 3 1 中不再适用 那么 有人有可行的解决方案吗 其实我已经找到这个了gist https gist git
  • 使用 Carrierwave 和 rmagick 上传到 s3 的 exif 图像旋转问题

    我的 Rails 应用程序中有照片上传功能 该应用程序通过 rmagick 和雾通过 Carrierwave 直接上传到 s3 我遇到的问题是 当通过手机通过肖像中的 拍照选项 上传照片时 注意这是 iPhone 上的 但我相信 Andro
  • 找不到 id=1 的用户

    I ve a current user处理身份验证的方法 应用程序控制器 rb protect from forgery helper method current user def current user current user Us
  • 设计 + 主动管理重定向

    我在为我的应用程序设置重定向时遇到问题 用户应该转到他们的个人资料 用户 节目 管理员应该转到管理仪表板 我该如何设置 目前出现以下错误 NameError in ActiveAdmin Devise SessionsController
  • 新手:“rake -T”时出现错误消息

    我在用红宝石企业版对于我的项目 当我检查我所有的耙任务通过运行命令rake T 我收到以下错误消息 You have already activated rake 0 9 2 2 but your Gemfile requires rake
  • 如何在Unity中正确导入fbx?

    我已经建模了一个对象并导出为 fbx 在 Unity 中导入资源后 会出现一些伪影 这些文物似乎与 Unity 导入有关 而不是 fbx 文件 因为在 Windo3d 3d viever 中查看的模型似乎没有问题 万分感谢 Blender
  • 在进行 Rails asset:precompile 时如何运行一些初始化程序?

    背景 我有一个应用程序 最近更新到了 Rails 3 2 1 从 Rails 3 0 x 并重构了 JS 和 CSS 资源以利用新的资源管道 该应用程序托管在具有 Celadon Cedar 堆栈的 Heroku 上 应用程序配置 我将应用
  • Android:如何从资源文件创建文件对象?

    我的资产文件夹中有一个文本文件 我需要将其转换为文件对象 而不是输入流 当我尝试这个时 我得到 没有这样的文件 异常 String path file android asset datafile txt URL url new URL p
  • 为什么即使 use_transactional_fixtures = false after_commit 也没有运行

    rspec 中的事务装置会阻止调用 after commit 但即使我使用以下命令禁用它们 RSpec configure do config config use transactional fixtures false end The
  • 如何通过 link_to helper 从 Rails 视图中将参数传递给控制器​​操作

    这是我的link to视野中的帮手 我想在其中附加一个参数link to标记以便我可以在操作中获取它connectTo 我无法找到正确的语法或方法 也无法理解我在 stackoverflow 上找到的一些答案 我怎样才能实现这个目标 def
  • 如何在特定时区(最好是我的应用程序的默认时区,而不是 UTC)创建新的 DateTime 对象?

    我已将时区设置为 config application rb 并且我希望默认情况下在我的应用程序中生成的所有时间都位于该时区 但是当我创建新的DateTime对象 使用 new 它创建它GMT 如何让它位于我的应用程序的时区 配置 应用程序
  • 服务资产发展非常缓慢

    我有一个带有默认资产管道的标准 Rails 3 Web 应用程序 突然之间 资源需要很长时间才能加载 我的页面加载时间从约 1 2 秒到约 1 分钟 服务器响应时间 home 正常 但某些 css 和 js 文件等待时间很长 长达 45 秒
  • 在Playframework2中,如何服务多个资源目录?

    asset目录有两个 一个是 ui dist另一个是 public 我尝试这样写路线 GET assets file controllers Assets at path public file GET ui file controller
  • 如何在 Android WebView 中从远程 URL 访问本地资源?

    要加载 HTML 中的资源 我使用 URLfile android asset my image png 当我在本地加载 HTML 时 它可以工作 例如 使用WebView loadData method 但是 我无法从远程网站加载本地资源
  • simple_forms 自定义数据属性

    我想在 simple form 生成的输入标签上有一个附加的数据属性 以下不起作用 这怎么可能做到呢 有可能吗 正如您可能已经猜到的 我正在尝试将 bootstrap datepicker 添加到我的网站 而不使用显式 js 来初始化日期选
  • 通过 Assets Pipeline 携带 Sass 变量,Rails 3.1 rc1

    我最近将我的 Rails 3 0 项目之一与 3 1 rc1 进行了分支 以尝试新的资产管道 在使用 3 1 之前 我一直在项目中使用 Sass 因此我在单独的配置文件中设置了一些变量和函数 并让所有其他 sass 文件在第一行导入该文件
  • RMagick 安装无法构建本机扩展

    在 Mountain Lion 上 我尝试安装 RMagick 我找到了一个GitHub 上的问题 https github com mroth lolcommits issues 56解决方案应该是命令gem pristine rmagi
  • Rails 3.1 资源预编译 - 包含所有 javascript 文件

    我希望 Rails 3 1 能够获取更多我的资源进行预编译 特别是 编译文件的默认匹配器不会添加 js文件来自vendor assets javascripts 我可以将资产添加到config assets precompile列表 但这似

随机推荐