使用'paperclip'gem和Ruby on Rails 3的问题

时间:2011-01-18 02:06:05

标签: ruby-on-rails ruby ruby-on-rails-3 paperclip

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

我想使用'paperclip'gem,所以我将它包含在我的Gemfile中,如下所示:

gem 'paperclip', "~> 2.3"

然后,在终端I中运行命令:

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'。< / p>

注意:这次我使用的是bundle install而不是sudo bundle install

我发现在终端中运行命令'rails server',我的RoR3应用程序与URL http://0.0.0.0:3000上的'paperclip'配合得很好。当我在网址http://project.local上使用“雪豹”的基本apache安装时,它不会。 为什么会这样?


编辑(在答案中提出请求后)

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 个答案:

答案 0 :(得分:3)

  

我得到:“/ usr / local / bin / rvm:第73行:/用户//。rvm / scripts / rvm

嗯,这很有趣。你不应该在/usr/local/bin中看到rvm,所以有些东西搞砸了。 请通过编辑将rvm info的输出添加到您的问题中。

除非你有非常特殊的需求,并且,如果你知道它,因为你要为多个用户管理主机,你绝不应该将sudo与rvm或rvm控制的gem一起使用。由sudo引起的混合权限,或者在安装rvm时以root身份运行,将导致各种奇怪的行为。

如果你有混合/多个rvm版本,那么第一个工作就是清理老鼠的窝并将东西恢复到干净/稳定的状态。

然后,您可以安装当前版本的rvm,并让它安装您的Rubies。此外,使用rvm get head使rvm保持最新非常重要。作者每周更新几次,更新是透明的,但添加了错误修复和新功能。


编辑:rvm info显示“糟糕的经纪”。

除了~/.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 ,然后按Return键。 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和你的红宝石,或者,如果你有信心,可以自己尝试一下。请记住, NOT 必须使用sudo来安装RVM。它应该安装到您的主目录中,没有任何投诉。

另外,我认为我们没有确定您正在运行的操作系统版本或XCode版本。您可能希望通过其网站为您的操作系统download Apple's most recent version of XCode。 DVD上附带Snow Leopard的版本有一些错误,应该尽快升级。如果您没有开发者帐户,请创建一个。他们是免费的。