首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'require 'rmagick‘和'require’的区别(Mac vs Debian)

'require 'rmagick‘和'require’的区别(Mac vs Debian)
EN

Stack Overflow用户
提问于 2011-12-07 05:25:37
回答 4查看 3.1K关注 0票数 2

我正在使用ImageMagick Q16、RVM和ruby1.8.7进行开发

我可以在IRB中使用以下内容:

注意单词'rmagick‘中的不同大写字母

代码语言:javascript
复制
require 'rubygems'
=> true 
require 'rmagick'
=> true 
require 'RMagick'
LoadError: no such file to load -- RMmagick

在我的Debian Squee6.0生产服务器上,安装了ImageMagick Q16、RVM和ruby1.8.7

我可以在IRB中使用以下内容:

代码语言:javascript
复制
require 'rubygems'
=> true 
require 'rmagick'
LoadError: no such file to load -- rmagick 
require 'RMagick'
=> true

“'gem list”在两个操作系统上都以小写显示。

代码语言:javascript
复制
rmagick (2.13.1)

我想知道这个问题的根源是什么?

如果gem的大小写(如gem列表中所示)与require 'some_gem'中的不同

EN

回答 4

Stack Overflow用户

发布于 2013-05-18 01:11:47

其根本原因是在Mac上的文件系统在默认情况下是不区分大小写的。如果需要,可以在命令行上进行快速测试以确认这一点。

代码语言:javascript
复制
touch testcase
touch Testcase
ls

如果你只看到一个testcase文件,那么你的文件可能不区分大小写。或者,您可以执行以下操作:

代码语言:javascript
复制
diskutil info /

如果您在结果中看到

代码语言:javascript
复制
File System Personality: Journaled HFS+ 

而不是

代码语言:javascript
复制
File System Personality: Case-sensitive Journaled HFS+.

然后你的大小写不敏感。如果你不敏感,那么这就是允许你使用'RMagick‘或'rmagick’或任何其他大小写模式的原因。正如卡梅隆所指出的,您所包含的lib文件是大写的,请参阅:https://github.com/rmagick/rmagick/blob/master/lib/RMagick.rb这意味着当您使用区分大小写的fs时,您必须

代码语言:javascript
复制
require 'RMagick'

作为

代码语言:javascript
复制
require 'rmagick'

查找不存在的文件。

我已经看到了很多这样的问题,特别是当你的git repo在同一个文件夹中有两个同名不同大小写的文件时(对我来说,这会导致git总是报告未提交的更改)。出于价值,我使用磁盘实用程序创建区分大小写的磁盘映像,以便挂载并用于开发。这样我就可以保留默认的不区分大小写的文件系统,并避免像这样的恼人问题。

票数 5
EN

Stack Overflow用户

发布于 2011-12-07 05:35:53

代码语言:javascript
复制
require 'RMagick'

才是你应该使用的。如果这在OSX上不起作用,那么说明您的安装有问题。你的Gemfile是什么样子的?

票数 1
EN

Stack Overflow用户

发布于 2013-05-02 16:30:35

RMagick

我的设置是使用RubyMine的Mac开发系统,并使用capistrano部署到Ubuntu服务器。尽管我确信远程系统上有正确的imagemagick库,但在部署过程中我一直收到一个失败的消息。

cap deploy期间的错误消息为

代码语言:javascript
复制
cannot load such file -- rmagick

Ubuntu和Mac Gemfile

代码语言:javascript
复制
gem 'rmagick'

需要'RMagick‘OS X

我发现的问题是,在Mac上开发rails rake将允许您

代码语言:javascript
复制
require 'rmagick'

代码语言:javascript
复制
require 'RMagick'

需要'RMagick‘Ubuntu

在我之前安装和测试库的位置:

代码语言:javascript
复制
sudo apt-get install libmagickwand-dev
gem install rmagick

小写的rmagick不起作用,因为它起作用了,令人困惑,这会导致你有一个库问题的结论。然而,问题是需要行。

代码语言:javascript
复制
require 'RMagick'

结论

始终对require行使用RMagick,因为这是库的正式名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8407062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档