Pour mon application, je dois gérer les fichiers Zip cryptés. En dépit de leur site à la recherche horrible, il semble que le commercial Zip gem de Chilkat soit probablement le meilleur moyen d’appliquer cela.
Comme il s'agit d'un joyau commercial, ils ne l'ont dans aucune des sources de gemmes typiques que Bundler examine. J'ai pu installer la version Linux 64 bits de la gem sous Mac OS X (bien que je n'aie pas encore essayé de l'exécuter, il n'y a donc pas encore Word si cela fonctionnera réellement). Cependant, j'essaie d'abord de faire en sorte que Bundler reconnaisse et charge le gem à partir du fichier .gem que j'ai téléchargé.
Bundler a un attribut path que j'ai essayé d'utiliser de plusieurs manières, mais je ne l'ai pas encore fait fonctionner:
C'est l'erreur que je reçois:
$ bundle install
Fetching source index for http://rubygems.org/
Fetching source index for http://gems.github.com/
Could not find gem 'chilkat (>= 0, runtime)' in source at /Users/username/appname/vendor/cache/chilkat-9.1.0-x86_64-linux.
Source does not contain any versions of 'chilkat (>= 0, runtime)'
Des idées sur la façon dont je peux faire en sorte que Bundler voie que la gemme est bien dans ce répertoire? Des options autres que l'attribut path qui ne semble pas fonctionner?
Merci beaucoup!
J'utilise Rails 3.0.3, nouvelle version de Rails 3 et bundler.
J'ai eu la même erreur avec:
gem 'mygem', :path => '/path/to/gem'
Résolu en spécifiant le numéro de version:
gem 'mygem', '0.0.1', :path => '/path/to/gem'
L'utilisation de >=0.0.1
pour la version a permis de revenir à l'erreur d'origine. Je ne peux pas expliquer cela, cependant.
Citant le commentaire utile de JD, extrait de la page de manuel Gemfile: "Semblable à la sémantique de l’option: git, l’option: path exige que le répertoire en question contienne un .gemspec pour la gem, ou que vous spécifiiez une version explicite que bundler devrait utiliser."
Essayez de décompresser la gemme puis d’utiliser le chemin dans votre Gemfile.
c'est à dire.
gem unpack my-gem-file.gem /my-Rails-app/vendor/gems/
puis ajoutez une ligne comme celle-ci à votre Gemfile
gem 'my-gem', '0.0.1', :path => 'vendor/gems/my-gem'
Évidemment, les chemins et les numéros de version varieront. Vous devrez peut-être également créer le répertoire vendor/gems dans la racine de votre application s'il n'existe pas déjà.
Copiez la gem dans le répertoire vendor/cache dans le dossier racine de votre application.
bundle install --local
Cela va installer le joyau local.
Etant donné que cette gemme sera locale pour toute machine sur laquelle vous exécuterez votre application, spécifiez simplement la gem dans Gemfile, puis installez-la manuellement. Lorsque vous exécutez "bundle install", celui-ci verra qu'il est déjà installé et passera à autre chose.
Cela a fonctionné pour moi lors de l'installation d'une version de Ruby-debug-base19 qui n'était pas encore disponible sur rubygems.org.
Une autre solution consisterait à configurer votre propre serveur bijou accessible à tous vos serveurs d'applications. Voir http://guides.rubygems.org/run-your-own-gem-server/
Je ne l'ai jamais fait moi-même mais ça a l'air très simple. Assurez-vous simplement de ne violer aucune des conditions de service de Chilkat si votre serveur gem doit se trouver sur Internet.
Commencez par décompresser la gemme en utilisant la solution par semanticart. Ensuite, ajoutez une gemspec dans la gemme décompressée. Bundler sera capable de fonctionner correctement.
Gem::Specification.new do |s|
s.name = "chilkat"
s.version = "9.4.1"
s.platform = Gem::Platform::Ruby
s.required_rubygems_version = ">= 1.3.6"
s.files = Dir.glob("lib/**/*")
s.require_path = "lib"
s.summary = "Make do with a self written gemspec"
end