使用'paperclip' gem和Ruby on Rails 3时出现问题

3

我正在使用运行着'Snow Leopard' v1.6.5的MacOS上的Ruby on Rails 3。

我想使用'paperclip' gem,所以在我的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 应用程序可以在 URL http://0.0.0.0:3000 上与 'paperclip' 配合良好。但是当我使用'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. I: 我尝试使用gem 'paperclip', '2.3.8'代替gem 'paperclip', "~> 2.3", 但是它没有起作用。

P.S. II: 我也正在使用MacPorts,并且已经安装了Image-Magick


你是在运行系统自带的 Ruby,还是通过 RVM 运行的? - greggreg
1
可能不能解决你的问题,但是在bundle install中添加sudo是一个不好的做法,可以参考这里的讨论:http://gembundler.com/man/bundle-install.1.html。 - icecream
如果你正在运行Apache,那么你使用什么来运行Rails?安装Paperclip后,您可能需要确保重新启动该服务器。 - Jesse Wolgamott
我认为我正在运行系统自带的 Ruby,但我不确定,因为很久以前我安装了 RVM。现在,如果我在终端中输入“rvm”,我会得到以下信息:“/usr/local/bin/rvm: line 73: /Users/<my_user_name>/.rvm/scripts/rvm: No such file or directory ...”。(!!!) - user502052
我正在使用Apache,并从“系统偏好设置/共享”面板中重新启动它。 - user502052
1个回答

3
我看到的是:“/usr/local/bin/rvm: line 73: /Users//.rvm/scripts/rvm”。这很有趣,你不应该在“/usr/local/bin”中看到rvm,所以肯定出了问题。请通过编辑您的问题将“rvm info”的输出添加到其中。除非您有非常特殊的需求,否则永远不要在使用rvm或rvm控制的gem时使用sudo。由于sudo或以root身份安装rvm时引起的混合权限会导致各种奇怪的行为。如果您有混合/多个rvm版本,则首要任务是清理rat's nest并将事物恢复到干净/稳定状态。然后,您可以安装当前版本的rvm,并让它安装您的Rubies。此外,使用“rvm get head”定期更新rvm非常重要。作者每周更新几次,更新是透明的,但会添加错误修复和新功能。
编辑:“rvm info”显示“bad brokage”。我们需要弄清楚rvm安装在哪里,除了您的“~/.rvm”路径之外。在命令行中键入:
locate rvm | grep -v /Users

我们特别寻找任何包含rvm shell脚本的实例。例如,这是我安装的第二个版本,以帮助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和Ruby,或者如果你感到自信,可以自己尝试。记住,你不需要使用sudo来安装RVM。它应该可以无任何问题地安装到您的主目录中。

另外,我想我们还没有确定你正在运行的操作系统或XCode的版本。你可能需要从他们的网站下载适合你OS的最新版本的XCode。随附于Snow Leopard DVD中的版本存在一些错误,应尽快升级。如果您没有开发人员帐户,请创建一个,它们是免费的。


我更新了问题。那么,现在我该怎么做呢?(感谢您花时间帮助我) - user502052
也许我没有理解。如果我运行“locate rvm | grep -v /Users”命令,我会得到“警告:定位数据库(/var/db/locate.database)不存在。 要创建数据库,请运行以下命令: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist请注意,数据库可能需要一些时间来生成;一旦 数据库已创建,此消息将不再出现。 - user502052
请阅读我在答案中的最后一次编辑,它解释了我们正在寻找什么。 - the Tin Man
我将所有输出复制到了一个文本文件中,但如何才能找到“仅在行末的单词'rvm'”?至少有5000行包含像'/usr/local/rvm/src/ruby-1.9.2-p136/version.h'这样的单词'rvm'。有关搜索的建议吗? - user502052
我正确重新安装了RVM,现在运行命令“rvm”,它可以工作...但是'paperclip'还没有:在日志中,我仍然有问题“在任何来源中都找不到paperclip-2.3.8”。 - user502052
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接