我是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),我想了解手动安装/设置与安装的相关信息。我希望这是有道理的。
感谢您的任何帮助。
答案 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 install
,rake db:migrate
等。
请注意,还有一个附加文件Gemfile.lock
,其中包含带有版本的Gems。这是为了确保新系统上的bundler将安装与您的版本相同的Gems。