2010-10-05 19 views
1

Beaucoup de confusion et de difficulté liées à l'installation de gemmes. Mon environnement de pierres précieuses:Comment puis-je obtenir le contrôle des emplacements d'installation de gemmes?

RubyGems Environment: 
    - RUBYGEMS VERSION: 1.3.7 
    - RUBY VERSION: 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10] 
    - INSTALLATION DIRECTORY: /opt/local/lib/ruby/gems/1.8 
    - RUBY EXECUTABLE: /opt/local/bin/ruby 
    - EXECUTABLE DIRECTORY: /opt/local/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86-darwin-10 
    - GEM PATHS: 
    - /opt/local/lib/ruby/gems/1.8 
    - /Users/apple/.gem/ruby/1.8 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - :sources => ["http://gems.rubyforge.org/"] 
    - REMOTE SOURCES: 
    - http://gems.rubyforge.org/ 

Le problème est celui où je vais ajouter (par exemple) à environment.rb:

config.gem 'authlogic' 

Tout bon, maintenant, quand je lance

gem install authlogic 
ERROR: While executing gem ... (Gem::FilePermissionError) 
    You don't have write permissions into the /opt/local/lib/ruby/gems/1.8 directory. 

exécuter avec sudo est bien:

Dans-iMac-335:authlogic apple$ sudo rake gems:install 
Password: 
(in /Users/apple/Documents/projects/authlogic) 
gem install authlogic 
Successfully installed authlogic-2.1.6 
1 gem installed 
Installing ri documentation for authlogic-2.1.6... 
Installing RDoc documentation for authlogic-2.1.6... 

b tâches de râteau en cours d'exécution ut renvoie une erreur:

Dans-iMac-335:authlogic apple$ rake db:migrate 
(in /Users/apple/Documents/projects/authlogic) 
Missing these required gems: 
    authlogic 

You're running: 
    ruby 1.8.7.174 at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby 
    rubygems 1.3.5 at /Users/apple/.gem/ruby/1.8, /Library/Ruby/Gems/1.8, /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8 

Run `rake gems:install` to install the missing gems. 

Je ne vois pas quel est le problème. Et je perds la tête. Le répertoire à l'emplacement 'autres' gemmes:

Dans-iMac-335:authlogic apple$ ls /Users/apple/.gem/ruby/1.8/gems 
actionmailer-2.2.2 activeresource-2.2.2 aws-s3-0.6.2  mysql-2.8.1  rails-2.2.2  xml-simple-1.0.12 
actionpack-2.2.2 activeresource-2.3.3 builder-2.1.2  packet-0.1.15  rake-0.8.7 
actionwebservice-1.2.3 activesupport-2.2.2 chronic-0.2.3  pg-0.8.0  rest-client-1.3.1 
activerecord-2.2.2 activesupport-2.3.3 mime-types-1.16  rack-1.0.0  sqlite3-ruby-1.0.1 
activerecord-2.3.5 activesupport-2.3.5 mongrel-1.1.5  rack-1.0.1  taps-0.2.26 

Ceci, je suppose, est le système de rails OSX par défaut? Le premier emplacement donne l'ensemble beaucoup plus complet qui représente mon environnement normal. Depuis mes projets dépendent beaucoup d'entre eux, et ils ne sont pas présents dans l'autre répertoire, c'est véritablement l'endroit que les gemmes sont tirés de mon environnement de développement:

Dans-iMac-335:authlogic apple$ ls /opt/local/lib/ruby/gems/1.8/gems 
RedCloth-4.2.3   crack-0.1.8   mime-types-1.16   rack-1.1.0   sinatra-0.9.2 
actionmailer-2.3.5  daemons-1.0.10   minitest-1.4.2   radiant-0.8.1   sinatra-1.0 
actionmailer-2.3.8  faker-0.3.1   mogli-0.0.14   rails-2.2.2   spree-0.10.2 
actionpack-2.3.5  fastthread-1.0.7  mongrel-1.1.5   rails-2.3.5   sqlite3-ruby-1.0.1 
actionpack-2.3.8  gem_plugin-0.2.3  mutter-0.5.3   rails-2.3.8   sqlite3-ruby-1.2.5 
activemerchant-1.5.1  google-geocode-1.2.1  mysql-2.8.1   rc-rest-3.0.0   state_machine-0.8.0 
activerecord-2.3.8  hashie-0.4.0   net-scp-1.0.2   rest-client-1.0.3  stringex-1.0.3 
activerecord-tableless-0.1.0 heroku-1.10.8   net-sftp-2.0.2   rest-client-1.6.1  taps-0.2.19 
activeresource-2.3.5  highline-1.5.1   net-ssh-2.0.15   rmagick-2.13.1   taps-0.3.13 
activeresource-2.3.8  hoe-2.3.3   net-ssh-gateway-1.0.1  ruby-hmac-0.4.0   thor-0.9.9 
activesupport-2.3.8  hpricot-0.8.1   nokogiri-1.3.3   ruby-openid-2.1.7  treetop-1.4.8 
authlogic-2.1.6   httparty-0.6.1   paperclip-2.3.1.1  rubyforge-2.0.2   whenever-0.3.7 
authlogic-oid-1.0.4  json-1.1.9   passenger-2.2.5   rubyforge-2.0.4   will_paginate-2.3.11 
aws-s3-0.6.2   json_pure-1.1.9   pg-0.8.0   rubygems-update-1.3.5  xml-simple-1.0.12 
builder-2.1.2   json_pure-1.2.4   pg-0.9.0   rubygems-update-1.3.7 
capistrano-2.5.9  launchy-0.3.3   polyglot-0.3.1   searchlogic-2.3.5 
cgi_multipart_eof_fix-2.5.0 less-1.2.20   postgres-0.7.9.2008.01.28 sequel-3.0.0 
configuration-1.1.0  libxml-ruby-1.1.3  rack-1.0.1   sequel-3.15.0 

Ainsi, si le système utilise /opt/local/lib/ruby/gems/1.8/gems répertoire, pourquoi ne peut-il pas le voir quand j'appelle rake? Et que puis-je faire à ce sujet?

Répondre

0

Je ne vois pas quel est le problème, mais avez-vous essayé d'exécuter "gem list" pour voir quels gems votre système reconnaît avoir installés?

+0

Je l'ai fait, et les gemmes "manquantes" sont dedans. Mais voir ma réponse ci-dessous: le problème semble être que lorsque rake s'exécute et charge l'environnement, il n'utilise pas la variable $ PATH que rails utilise quand il installe gems. –

0

Ma solution était de changer le #! ligne de rake.rb pour pointer vers l'emplacement de l'installation de rubis qui a les gemmes. D'après ce que j'ai appris, lorsque vous installez des gemmes, les rails tiennent compte de la variable $ PATH, mais lorsque vous chargez l'environnement lorsque rake est appelé, ce n'est pas le cas. Donc, rake ne sait pas à propos de ces endroits. La réponse était alors de diriger l'attention de Rake vers le bon endroit.