Разница между 'require' rmagick 'и' require RMagick '(Mac против Debian) - PullRequest
2 голосов
/ 07 декабря 2011

Я использую Mac Pro Lion для разработки с ImageMagick Q16, RVM и ruby ​​1.8.7

Я могу использовать следующее в IRB:

Обратите внимание на различные заглавные буквы в слове 'rmagick'

require 'rubygems'
=> true 
require 'rmagick'
=> true 
require 'RMagick'
LoadError: no such file to load -- RMmagick

На моем рабочем сервере Debian Squeeze 6.0 с ImageMagick Q16, RVM и ruby ​​1.8.7

Я могу использовать следующее в IRB:

require 'rubygems'
=> true 
require 'rmagick'
LoadError: no such file to load -- rmagick 
require 'RMagick'
=> true

'список драгоценных камней' отображается в обеих ОС в нижнем регистре.

rmagick (2.13.1)

Хотелось бы узнать корень этой проблемы?

Если капитализация драгоценных камней (как показано в списке драгоценных камней) не будет такой же, как в require 'some_gem'

Ответы [ 4 ]

4 голосов
/ 17 мая 2013

Основная причина этого в том, что файловая система в Mac OS X по умолчанию не учитывает регистр .Вы можете сделать быстрый тест, чтобы подтвердить это, если хотите, в командной строке.

touch testcase
touch Testcase
ls

Если вы видите только один файл тестового примера, то вы, вероятно, не чувствительны к регистру fs.В качестве альтернативы вы можете сделать что-то вроде:

diskutil info /

В результате, если вы видите

File System Personality: Journaled HFS+ 

, а не

File System Personality: Case-sensitive Journaled HFS+.

, тогда ваш регистр не учитывается.Если вы невосприимчивы, то это то, что позволяет вам избежать требования «RMagick» или «rmagick» или любой другой модели капитализации.Как указывает Кэмерон, файл lib, который вы включили в заглавные буквы, см .: https://github.com/rmagick/rmagick/blob/master/lib/RMagick.rb Это означает, что когда вы используете fs с учетом регистра, вам нужно будет

require 'RMagick'

как

require 'rmagick'

ищет файл, который не существует.

Я видел много проблем с этим, особенно если в вашем git-репо два файла с одинаковым именем и разными делами в одной папке (для меняэто приводит к тому, что git всегда сообщает о незавершенных изменениях).Для чего я использовал дисковую утилиту для создания образа диска с учетом регистра, который я монтирую и использую для разработки.Таким образом, я могу оставить fs без учета регистра по умолчанию и избежать раздражающих проблем, подобных этой.

1 голос
/ 07 декабря 2011
require 'RMagick'

- это то, что вы должны использовать.если это не работает на OSX, что-то не так с вашей установкой.как выглядит ваш Gemfile?

0 голосов
/ 02 июня 2016

В Mac OSX вы должны установить их из источника:

brew install imagemagick --disable-openmp --build-from-source

sudo gem install rmagick

Взято из этого поста:

http://blog.paulopoiati.com/2013/01/28/installing-rmagick-in-mac-os-x-mountain-lion-with-homebrew/

0 голосов
/ 02 мая 2013

RMagick

Моя установка - это система разработки Mac, использующая RubyMine и развертываемая на сервере Ubuntu с использованием capistrano.Я продолжал получать ошибки во время развертывания, хотя я был уверен, что на удаленной системе были правильные библиотеки imagemagick.

Сообщение об ошибке во время cap deploy было

cannot load such file -- rmagick

Ubuntu и Mac Gemfile

gem 'rmagick'

требуется 'RMagick' OS X

Проблема, которую я обнаружил, заключается в том, что разработка рейк-рейка в Mac OS X позволит вам избежать неприятностей с

require 'rmagick'

ИЛИ

require 'RMagick'

требуется Ubuntu 'RMagick'

Там, где ранее я установил и протестировал библиотеку:

sudo apt-get install libmagickwand-dev
gem install rmagick

rmagick в нижнем регистре неработать, сбивая с толку, так как он работал, что приводит вас к выводу, что у вас есть проблема с библиотекой.Однако проблема заключается в требуемой строке.

require 'RMagick'

Заключение

Всегда используйте RMagick для требуемой строки, поскольку это официальное название библиотеки.

...