Проблема с использованием гема 'paperclip' и Ruby on Rails 3 - PullRequest
3 голосов
/ 18 января 2011

Я использую Ruby on Rails 3 на компьютерах MacO под управлением Snow Leopard v1.6.5.

Я хочу использовать гем 'paperclip', поэтому я включил его в свой Gemfile следующим образом:

gem 'paperclip', "~> 2.3"

Затем в Терминале я запускаю команду:

sudo bundle install

Результат:

...
Using paperclip (2.3.8) 
Using thor (0.14.6) 
Using railties (3.0.1) 
...
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

это означает, что 'paperclip v2.3.8' установлен.

Затем я перезапустил «apache» из «Системных настроек / Общий доступ / панель»

Используя мое приложение RoR и локально перемещаясь по сайту, я понял, что что-то не так. Итак, просмотрев логи в «Консольных сообщениях», я обнаружил следующее:

18/01/2011 16:50:52 org.apache.httpd[12972] [31mCould not find paperclip-2.3.8 in any of the sources[0m

Что значит? Как решить проблему?


ОБНОВЛЕНИЕ (важно!!!)

Я правильно переустановил RVM, и теперь, запустив команду 'rvm', я заставляю ее работать ... но пока нет 'paperclip': в логах у меня все еще есть проблема 'Could not find paperclip-2.3.8 in any of the sources'.

Обратите внимание: на этот раз я использовал bundle install вместо sudo bundle install!

Я обнаружил, что при запуске команды 'rails server' в Терминале мое приложение RoR3 прекрасно работает с 'paperclip' по URL http://0.0.0.0:3000. Это не так, когда я использую базовую установку apache из 'Snow Leopard' по URL http://project.local. Почему это происходит?!


РЕДАКТИРОВАТЬ (после запроса в ответе)

Выход rvm info:

/usr/local/bin/rvm: line 73: /Users/<my_user_name>/.rvm/scripts/rvm: No such file or directory
...
<A lot of the same line>
...
/usr/local/bin/rvm: line 73: /Users/<my_user_name>/.rvm/scripts/rvm: No such file or directory
/usr/local/bin/rvm: fork: Resource temporarily unavailable
/usr/local/bin/rvm: fork: Resource temporarily unavailable

P.S. Я: Я пытался использовать gem 'paperclip', '2.3.8' вместо gem 'paperclip', "~> 2.3", но это не работает.

P.S. II: Я также использую MacPorts , и я установил Image-Magick .

1 Ответ

3 голосов
/ 18 января 2011

Я получаю: "/ usr / local / bin / rvm: строка 73: /Users//.rvm/scripts/rvm

Ну, это интересно. Вы не должны видеть rvm в /usr/local/bin, поэтому что-то напутало. Пожалуйста, добавьте вывод rvm info к вашему вопросу, отредактировав его.

Если у вас нет особых потребностей, и, если бы вы это сделали, вы бы знали об этом, поскольку вы будете администрировать хост для нескольких пользователей, вы никогда не должны использовать sudo с rvm или гемом, контролируемым rvm. Смешанные разрешения, вызванные sudo или выполнением от имени пользователя root при установке rvm, вызовут все виды странного поведения.

Если у вас смешанная / несколько версий rvm, то первая задача - очистить гнездо крысы и вернуть вещи в чистое / стабильное состояние.

Затем вы можете установить текущую версию rvm и позволить ей устанавливать ваши Ruby. Также очень важно поддерживать rvm в актуальном состоянии, используя rvm get head. Автор обновляет его несколько раз в неделю, и обновления являются прозрачными, но добавляют исправления ошибок и новые функции.


Редактировать: rvm info показывает "плохой брокер".

Нам нужно выяснить, где установлен rvm, помимо вашего ~/.rvm пути. В командной строке введите:

locate rvm | grep -v /Users

В частности, мы ищем экземпляры сценария оболочки rvm. Например, это вторая версия, которую я установил, чтобы помочь TextMate работать с rvm:

/Applications/TextMate.app/Contents/SharedSupport/Bundles/Ruby on Rails.tmbundle/Support/lib/rvm

Обратите внимание, что это просто слово "rvm" в конце строки.


РЕДАКТИРОВАТЬ: "Я основал:"

Хорошо, это хорошие новости. RVM предназначен для работы из одного каталога. Вы можете запустить пару команд для очистки пути /usr/local:

Эта следующая часть удалит файлы и каталоги, поэтому это нужно сделать осторожно. Если вам удобно работать из командной строки и вы понимаете типичное системное администрирование, вы можете сделать это так:

sudo rm /_rvm
sudo rm /usr/bin/rvm-install
sudo rm /usr/local/bin/rvm-prompt
sudo rm /usr/local/bin/rvm-shell
sudo rm /usr/local/bin/rvmsudo 

sudo rm /usr/local/bin/rvm

sudo rm -rf /usr/local/rvm/

Если вы хотите быть более осторожным, вы можете открыть окно Finder, а затем CMD+SHFT+G, чтобы открыть диалоговое окно «Перейти к папке». Скопируйте и вставьте первый PATH в командной строке выше и нажмите клавишу возврата. Finder перейдет в этот каталог. Найдите этот файл (_rvm). Перетащите его в корзину. Система должна запросить у вас пароль sudo. Повторите для каждой из команд. Это хорошо работает, потому что позволяет Finder использовать некоторые свои интеллектуальные возможности, чтобы защитить вас от моих глупых ошибок. : -)

После того, как эти вещи удалены, ваш компьютер должен быть частично очищен. В командной строке введите echo $PATH и посмотрите, указаны ли какие-либо из этих путей. Если это так, откройте ~/.bashrc или ~/.bash_profile, найдите место изменения переменной среды PATH и удалите этот путь к каталогу.

Затем введите ls -al ~/.rvm. Если у вас дома есть папка .rvm, вы можете удалить ее с помощью rm -rf ~/.rvm. После этого проверьте ваш .bashrc или .bash_profile на наличие чего-либо с rvm, которое НЕ указывает на ~/.rvm или /Users/your_account_name/.rvm. Удалите их, закройте окно терминала и снова откройте его.

На этом этапе rvm должен быть удален с вашей машины.

Уже поздно, и я болел все выходные, так что мы заберем его завтра, переустановив RVM и ваши Rubies, или, если вы уверены, попробуйте сами. Помните, что НЕ нужно использовать sudo для установки RVM. Он должен быть установлен в ваш домашний каталог без каких-либо жалоб.

Кроме того, я не думаю, что мы установили, какую версию ОС или XCode вы используете. Возможно, вы захотите загрузить самую последнюю версию Apple XCode для вашей ОС со своего веб-сайта. Версия, которая шла со Snow Leopard на DVD, имеет некоторые ошибки и должна быть обновлена ​​как можно скорее. Если у вас нет учетной записи разработчика, создайте ее. Они свободны.

...