bundle install 返回“找不到Gemfile”

139

我是Rails的新手,目前正在按照指南进行学习。 指南中写道:

使用文本编辑器将Bundler所需的Gemfile更新为清单2.1中的内容。

source 'https://rubygems.org'

gem 'rails', '3.2.3'

group :development do
  gem 'sqlite3', '1.3.5'
end


# Gems used only for assets and not required
# in production environments by default.

group :assets do
  gem 'sass-rails',   '3.2.4'
  gem 'coffee-rails', '3.2.2'
  gem 'uglifier', '1.2.3'
end

gem 'jquery-rails', '2.0.0'

group :production do
  gem 'pg', '0.12.2'
end

然后我们使用 bundle install 命令安装并包含宝石(gems):

    $ bundle install --without production 
如果Bundler出现 no such file to load -- readline (LoadError) 错误,请尝试将 gem 'rb-readline' 添加到您的 Gemfile 中。我按照此方法操作,甚至在 Gemfile 中添加了 gem 'rb-readline',但似乎无法找到该文件,当我打开文本编辑器时确实看到了 Gemfile。我注意到他们让我放置了 gem 'rails', 3.2.3,但我的 Rails 版本是 3.2.1,所以我尝试将其更改为 3.2.1,但也没有起作用。希望有人能提供您想法或建议。

1
为什么在Gemfile清单中要加入“- -”字符? - mikdiet
2
我找到了解决问题的方法... 我应该先 "$cd demo_app",然后从那个文件夹位置运行 "$install bundle"。 :) - levelone
这对我解决了问题:https://jekyllrb.com/docs/。 - Gabriel Staples
11个回答

289

你只需要进入你的应用程序所在的目录,然后运行 bundle install :)


3
@svoisen, :D 顺便说一下,当搜索这个特定问题时,谷歌将您的答案包含在摘录中。来自睡眠不足的未来的问候和感谢! - Jaime
1
顺便提一下,您可以使用“whereis <应用程序名称>”命令找到您的应用程序目录,通常Gemfile位于/usr/shared/*下。 - 4gus71n
应用程序也可以在 /opt/ 文件夹中的一个文件夹中。 - Mo Beigi
只需添加一些明确说明,将其移动到项目文件夹,而不是项目的 'bin' 文件夹 :) - user1162069

24
你也可以在同一条命令中指定Gemfile的路径,例如:
BUNDLE_GEMFILE="MyProject/Gemfile.ios" bundle install

2
完美的答案。因为在我的情况下,我无法在任何地方访问bundle命令。 [root@alc bin]# BUNDLE_GEMFILE="../../apps/redmine/htdocs/Gemfile" ./bundle install 是我要执行的命令。 - uzay95
1
由于某种原因,当我将Gemfile复制到Docker容器中时,我遇到了这个问题,我找不到.bundle文件,并且我已经设置了我的WOKRDIR,但似乎没有为bundle install捕获它,这个方法解决了问题! - ConstantineK

22

我也在OSX机器上遇到过这个问题。我发现Rails没有安装...这让我感到惊讶,因为我认为OSX总是预装了Rails。

  • sudo gem install rails
  • 如果要安装Jekyll,我还需要使用sudo:
  • sudo gem install jekyll bundler
  • cd ~/Sites
  • jekyll new <foldername>
  • cd <foldername>cd !$(这是魔法 ;)
  • bundle install
  • bundle exec jekyll serve
  • 然后在浏览器中打开http://127.0.0.1:4000/,你应该可以看到运行结果了。

2
避免使用 sudo 安装 gems。这会给您带来麻烦。阅读更多信息:https://thoughtbot.com/blog/psa-do-not-use-system-ruby - David Hempy

15

你必须在Gemfile所在的同一目录中。


10

我在Ubuntu 18.04上遇到了这个问题。我更新了gem。

sudo gem install rails
sudo gem install jekyll
sudo gem install jekyll bundler
cd ~/desiredFolder
jekyll new <foldername>
cd <foldername> OR 
bundle init
bundle install
bundle add jekyll
bundle exec jekyll serve

所有的工作都完成了,只需进入您的浏览器,转到http://127.0.0.1:4000/,然后它应该正在运行。


8

当我遇到类似的问题时,gem update --system 帮了我大忙。在运行 bundle install 之前先执行此命令。


3

在我的情况下,这个方法可行:

  • cd /usr/bin
  • touch Gemfile
  • 现在您可以运行bundle install

8
执行touch Gemfile返回:touch: Gemfile: 操作不允许 - Malwinder Singh

2
  1. 确保文件名首字母大写为Gemfile,而不是gemfile
  2. 确保你在与Gemfile相同的目录下。

-1
在您的项目中搜索Gemfile文件,进入该目录,然后运行"bundle install"。在运行此命令之前,请确保已安装gem“sudo gem install bundler”。

他执行了 "bundle install",我不理解你的回答。 - Gar

-2
sudo gem install rails

我的问题解决了,只需要这段代码。


强烈反对“sudo gem ....”的习惯,因为它会使人们非常容易受到攻击,以root身份运行任意开源代码。 - Andy Dent

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