了解使用带有Ruby on Rails的ImageMagick和PaperClip的服务器设置

时间:2014-07-25 07:41:36

标签: ruby-on-rails ruby heroku imagemagick paperclip

我是Ruby on Rails的新手(来自C#/ ASP.NET)。我的问题是关于使用PaperClip和ImageMagick时发生的与服务器相关的更改。我按照教程学习如何使用PaperClip。因此,当我在我的笔记本电脑Mac OS上安装ImageMagick以使用PaperClip宝石时,事情看起来非常简单。

显然,这意味着ImageMagick在开发期间在我的本地机器上安装,然后在Heroku上进行生产。是否有任何东西放在我的Ruby应用程序中用于ImageMagick(代码,配置更改等)?当我将我的Ruby应用程序推送到Heroku时,事情似乎适用于ImageMagick和PaperClip。

ImageMagick安装的组件如何以及在哪里推送到Heroku? ImageMagick不是一个宝石,所以我只是想了解像ImageMagick这样的本地开发安装软件如何转移到像Heroku这样的生产环境。

当我进行Heroku推送时,除了PaperClip gem之外,是否在Heroku服务器(或任何服务器)上安装了ImageMagick?只是试图了解ImageMagick与gems等已安装软件的使用情况,以及如何将产品推送到生产环境,并在推送到生产之后“自动”地与应用程序集成。

我想了解它是如何工作的,这样我就可以部署在不同的服务器环境中(例如Rackspace而不是Heroku),我想了解手动安装/设置与安装的相关信息。我希望这是有道理的。

感谢您的任何帮助。

2 个答案:

答案 0 :(得分:1)

简单的答案(我无法让自己阅读你的散文)是要意识到Rails运行在Ruby上,这意味着它利用了语言的gem系统

安装宝石时,有两件事需要考虑。首先,大多数宝石只是Ruby的“内部”;意味着它们将为API或程序化提供功能;第二组宝石使用第三方软件 - 例如MYSQL或ImageMagick

当您使用与其他软件接口的gem时,需要安装该软件(因此gem可以使用它)。这是使用ImageMagick

的许多人开始出现问题的地方

-

<强>回形针

您必须记住,Paperclip依赖于ImageMagick

来自回形针github repo

  

Paperclip旨在作为Active的简易文件附件库   记录。其背后的意图是尽可能简化设置   像处理其他属性一样处理文件。这意味着   它们没有保存到磁盘上的最终位置,也不是   如果设置为nil则删除,直到调用ActiveRecord :: Base#save。它   如果需要,可根据大小和状态管理验证。它可以   如果需要,将其指定的图像转换为缩略图   先决条件就像安装ImageMagick一样简单(对于大多数人来说)   现代的基于Unix的系统,就像安装正确的系统一样简单   包)。附加文件保存到文件系统并引用   在浏览器中通过易于理解的规范,具有   明智和有用的默认值。

Paperclip可以独家使用ImageMagick来管理上传的图像。 ImageMagick是一个“可选附加”,允许您即时裁剪/编辑图像。与ffmpeg(相当于ImageMagick的视频)一样,您可以自行运行Paperclip

如果要裁剪图像等 - 您必须在系统上安装ImageMagick的库文件。这在Linux上很简单,在Windows上很多棘手

-

<强>的Heroku

我们非常幸运,因为Heroku旨在为RoR提供稳定的环境。也就是说,Heroku通过提供尽可能多的功能来实现这一点 - 包括在系统上安装ImageMagick的能力

Heroku在亚马逊的AWS基础架构上运行Linux。这意味着使用ImageMagick相对简单 - 你只需要将它添加到你的gemfile&amp; Heroku将处理其余的

答案 1 :(得分:0)

查看位于Rails应用程序根目录的Gemfile。在那里你应该拥有你的应用程序使用的所有Gems。该文件由bundler Gem使用;如果要在新计算机上部署应用程序,则不必逐个安装Gems。只需运行bundle install,捆绑商就可以处理宝石。

在Heroku中,这是自动化的。在git push到heroku之后,它正在执行必要的步骤,例如bundle installrake db:migrate等。

请注意,还有一个附加文件Gemfile.lock,其中包含带有版本的Gems。这是为了确保新系统上的bundler将安装与您的版本相同的Gems。