Проблема с разрешением Ruby Bundler - PullRequest
4 голосов
/ 25 августа 2010

Итак, я уверен, что однажды я сделал sudo bundle install от отчаяния, которое я теперь понимаю, что нет-нет. Но теперь, когда я пытаюсь запустить bundle install, я получаю следующую ошибку:

Installing culerity (0.2.12) /Library/Ruby/Site/1.8/rubygems/installer.rb:294:in `generate_bin': You don't have write permissions into the /Library/Ruby/Gems/1.8/bin directory. (Gem::FilePermissionError)
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:196:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.0.rc.6/lib/bundler/source.rb:100:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.0.rc.6/lib/bundler/installer.rb:55:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.0.rc.6/lib/bundler/spec_set.rb:12:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.0.rc.6/lib/bundler/spec_set.rb:12:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.0.rc.6/lib/bundler/installer.rb:44:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.0.rc.6/lib/bundler/installer.rb:8:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.0.rc.6/lib/bundler/cli.rb:217:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.0.rc.6/lib/bundler/vendor/thor/task.rb:22:in `send'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.0.rc.6/lib/bundler/vendor/thor/task.rb:22:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.0.rc.6/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.0.rc.6/lib/bundler/vendor/thor.rb:246:in `dispatch'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.0.rc.6/lib/bundler/vendor/thor/base.rb:389:in `start'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.0.rc.6/bin/bundle:13
    from /usr/bin/bundle:19:in `load'
    from /usr/bin/bundle:19

Я пытался удалить все в ~ / .bundle ~ / .gem .bundle Gemfile.lock, а также любые ссылки на хитрость или капибару в / Library / Ruby (OSX 10.6). Я также проверил, чтобы убедиться, что права доступа были установлены правильно (не root) для всех моих файлов в этом проекте. Я также очистил кеш драгоценностей.

Мой Gemfile:

source 'http://rubygems.org'

gem 'rails', '3.0.0.rc2'

# Bundle edge Rails instead:
#gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'pg'

# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
gem 'ruby-debug'

# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri', '1.4.1'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'

# Bundle gems for certain environments:
# gem 'rspec', :group => :test
# group :test do
#   gem 'webrat'
# end

gem 'haml', '3.0.15'
gem 'mogli', '0.0.13' #, :path => "~/Sites/mogli"
gem 'facebooker2', '0.0.4'
gem 'geokit'
gem 'acts_as_restful_list'
gem 'hoptoad_notifier'

group :development, :test do
  gem "rspec-rails", '2.0.0.beta.19'
  gem 'factory_girl_rails'
  gem 'capybara', '0.3.9'
  gem 'database_cleaner'
  gem 'cucumber-rails', '0.3.2'
  gem 'cucumber', '0.8.5'
  gem 'spork'
  gem 'launchy'    # So you can do Then show me the page
end

Кроме того, в моей системе установлен rvm, но я использую системный ruby ​​для этого проекта.

Есть идеи, что является причиной разрешения? Конечно, я не застрял, используя sudo bundle install.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 10 мая 2011

Похоже, вы используете системный рубин. У вас есть несколько вариантов:

  • используйте sudo для установки всей вашей системы. это может быть проблема с конфликтующими драгоценными камнями из разных приложений.
  • использовать пакетную установку --path bundle_dir, которая собирается установить гемы в bundle_dir
  • use rvm (http://rvm.beginrescueend.com), эта программа позволит вам использовать разные версии ruby ​​и разные наборы гемов.
0 голосов
/ 06 декабря 2010

Попробуйте коснуться файла по указанному пути. Я полагаю, OS X защищает эти каталоги немного больше, чем обычный способ? Я думаю, что OS X поддерживает ACL с их файловой системой, может быть, вы должны посмотреть там?

0 голосов
/ 25 августа 2010

возможно, попробуйте использовать chmod для всего, но похоже, что вам нужно запустить его как sudo ... не знаю, почему это не вариант ...

...