ruby - Diferencia entre ''require'' rmagick ''y'' require RMagick ''(Mac vs Debian)
macos ubuntu (4)
La causa principal de esto es que el sistema de archivos en Mac OS X no distingue entre mayúsculas y minúsculas por defecto . Puede hacer una prueba rápida para confirmar esto si lo desea en la línea de comando.
touch testcase
touch Testcase
ls
Si solo ve un solo archivo de caso de prueba, entonces probablemente sea un fs insensible a mayúsculas y minúsculas. Alternativamente, puedes hacer algo como:
diskutil info /
En el resultado si ves
File System Personality: Journaled HFS+
y no
File System Personality: Case-sensitive Journaled HFS+.
entonces tu caso insensible Si eres insensible, entonces eso es lo que te permite salirte con la exigencia de ''RMagick'' o ''rmagick'' o cualquier otro patrón de capitalización. Como Cameron señala el archivo lib que su inclusión está en mayúscula, consulte: https://github.com/rmagick/rmagick/blob/master/lib/RMagick.rb Esto significa que cuando se encuentre en un caso sensible a mayúsculas tendrá que
require ''RMagick''
como
require ''rmagick''
busca un archivo que no existe.
He visto muchos problemas con esto, especialmente si su git repo tiene dos archivos con el mismo nombre y diferentes casos en la misma carpeta (para mí esto resulta en que git siempre informa cambios no confirmados). Por lo que vale, utilicé la utilidad de disco para crear una imagen de disco sensible a mayúsculas y minúsculas que monté y usé para el desarrollo. De esa manera, puedo dejar el Fs insensible a mayúsculas en su lugar y evitar problemas molestos como este.
Estoy usando Mac Pro Lion para el desarrollo con ImageMagick Q16, RVM y ruby 1.8.7
Puedo usar lo siguiente en IRB:
Tome nota de los diferentes límites en la palabra ''rmagick''
require ''rubygems''
=> true
require ''rmagick''
=> true
require ''RMagick''
LoadError: no such file to load -- RMmagick
En mi servidor de producción Debian Squeeze 6.0 con ImageMagick Q16, RVM y ruby 1.8.7
Puedo usar lo siguiente en IRB:
require ''rubygems''
=> true
require ''rmagick''
LoadError: no such file to load -- rmagick
require ''RMagick''
=> true
''gema lista'' se muestra en ambos sistemas operativos en minúsculas.
rmagick (2.13.1)
Me gustaría saber la raíz de este problema?
En caso de que la capitalización de las gemas (como se muestra en la lista de gemas) no sea la misma que en el require ''some_gem''
require ''RMagick''
es lo que deberías estar usando. si eso no funciona en OSX, algo no está bien con su instalación. ¿Cómo se ve tu Gemfile?
RMagick
Mi configuración es un sistema de desarrollo Mac que usa RubyMine y que se implementa en un servidor Ubuntu usando capistrano. Seguí obteniendo un error durante la implementación, aunque estaba seguro de que el sistema remoto tenía las bibliotecas de imagemagick correctas.
El mensaje de error durante la cap deploy
fue
cannot load such file -- rmagick
Ubuntu y Mac Gemfile
gem ''rmagick''
requiere ''RMagick'' OS X
El problema que he encontrado es que el desarrollo de un rake rake en Mac OS X te permitirá salirte con la suya
require ''rmagick''
O
require ''RMagick''
requiere ''RMagick'' Ubuntu
Donde anteriormente había instalado y probado la biblioteca:
sudo apt-get install libmagickwand-dev
gem install rmagick
La rmagick en minúscula no funcionó, ya que funcionaba, lo que te lleva a la conclusión de que tienes un problema con la biblioteca. Sin embargo, el problema es la línea requerida.
require ''RMagick''
Conclusión
Siempre use RMagick
para la línea require, porque ese es el nombre oficial de la biblioteca.
En Mac OSX, debe instalar estos desde el origen:
brew install imagemagick --disable-openmp --build-from-source
sudo gem install rmagick
Tomado de esta publicación:
http://blog.paulopoiati.com/2013/01/28/installing-rmagick-in-mac-os-x-mountain-lion-with-homebrew/