Ruby newb在这里.
我通过rubyinstaller下载ruby,做了gem install rails,解决了一些缺少的库,最后分叉了我想要处理的ruby项目.
在接触任何东西之前,我看到我的Gemfile.lock被修改了:
diff --git a/Gemfile.lock b/Gemfile.lock
index aefda68..9ebccba 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -46,6 +46,7 @@ GEM
diff-lcs (1.1.3)
erubis (2.7.0)
eventmachine (1.0.0)
+ eventmachine (1.0.0-x86-mingw32)
execjs (1.4.0)
multi_json (~> 1.0)
hike (1.2.1)
@@ -65,11 +66,17 @@ GEM
multi_json (1.3.6)
multi_xml (0.2.2)
pg (0.14.1)
+ pg (0.14.1-x86-mingw32)
polyglot (0.3.3)
...
PLATFORMS
ruby
+ x86-mingw32
Run Code Online (Sandbox Code Playgroud)
所有修改后的行似乎都与Windows相关.这个答案似乎表明我不应该gitignore Gemfile.lock(它已经承诺了我克隆的repo无论如何).这个答案意味着如果我提交并将其推送到heroku,我可能会遇到错误(这是有道理的,因为我不希望我的应用程序依赖于Windows特定的文件).
那么,这是什么?我该如何解决?我应该从我的仓库中删除Gemfile.lock吗?
在Docker容器中使用Rails时, 几个 帖子(包括docker.com上的一个帖子)使用以下模式:
Dockerfile做ADD Gemfile和ADD Gemfile.lock,然后RUN bundle install.docker-compose run web rails new.由于我们RUN bundle install要构建图像,因此docker-compose build web在更新之后似乎是合适的Gemfile.
这可以在图像内部更新gemset ,但是:
该Gemfile.lock泊坞窗主机将不会被更新,以反映更改Gemfile.这是一个问题,因为:
Gemfile.lock 应该在您的存储库中,并且:
它应该与你的当前一致Gemfile.
所以:
如何Gemfile.lock在主机上更新,以便可以检入版本控制?
最近,我开始使用 Jekyll 来构建文档站点并将其托管在 Github Pages 上。据我所知,Github Pages 的插件列表非常有限。在进行一些漏洞测试时,我发现文件Gemfile.lock容易受到 XML 外部实体 (XXE) 注入的攻击。
在我的研究中,我读到:
阅读已接受的答案后:
假设您没有编写 rubygem,Gemfile.lock 应该位于您的存储库中。它用作所有所需 gem 及其依赖项的快照。这样,bundler 就不必在每次部署等时重新计算所有 gem 依赖项。
但我无法控制 Jekyll 网站。如果我理解这个过程,但 Github Pages 构建了该网站,并且如果Gemfile.lock用于 Gems 的开发,并且这不是我可以控制的,那么可以删除该文件并添加到 .gitignore 吗?请纠正我?
我不明白为什么我必须更新我的gems localy并将其推送到heroku,以获得它们的更新版本?
为什么没有heroku bundle update命令?
我花了几个小时但无法解决这个问题.
当我尝试使用我的本地rails应用程序部署到生产服务器时,capistrano我得到以下错误:
The --deployment flag requires a Gemfile.lock. Please make sure you have checked your Gemfile.lock into version control before deploying.
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题的任何想法?
我的rails应用程序文件夹使用Git进行版本控制.我已将本地git repo推送到github,并且github上有Gemfile.lock.所以它受版本控制.然而,卡尼斯特拉诺继续给出同样的错误.
Deploy.rb文件:https://gist.github.com/brahmadpk/4748991
我正在为Ruby on Rails项目建立一个新的源代码控制库.我正在使用Mercurial,我想知道我的本地目录的哪一部分要检查.
我在项目工作区中本地设置它的方式是以下文件结构:
drwxr-xr-x 7 agenadinik agenadinik 4096 2011-04-27 09:58 app
drwxr-xr-x 5 agenadinik agenadinik 4096 2011-04-27 09:58 config
-rw-r--r-- 1 agenadinik agenadinik 154 2011-04-27 09:58 config.ru
drwxr-xr-x 3 agenadinik agenadinik 4096 2011-04-29 14:12 db
drwxr-xr-x 2 agenadinik agenadinik 4096 2011-04-27 09:58 doc
-rwxrwxrwx 1 agenadinik agenadinik 781 2011-05-05 18:57 Gemfile
-rw-r--r-- 1 agenadinik agenadinik 1745 2011-05-05 18:57 Gemfile.lock
drwxr-xr-x 3 agenadinik agenadinik 4096 2011-04-27 09:58 lib
drwxr-xr-x 2 agenadinik agenadinik 4096 2011-04-27 09:58 log
drwxr-xr-x 3 agenadinik agenadinik …Run Code Online (Sandbox Code Playgroud) 我有一个 Gemfile.lock,git 根本不会忽略它。它在我的 gitignore 文件中(见下文),但每当我bundle install. 还有其他人遇到过这样的事情吗?提前致谢。
我的 Gitignore 看起来像这样:
/.tags*
/log
/tmp
/db/*.sqlite3
/public/system
/coverage/
/spec/tmp
**.orig
rerun.txt
Gemfile.lock
...
Run Code Online (Sandbox Code Playgroud) 我试图摆脱我的"未提交的更改",我的Gemfile.lock不断重新出现作为一个非暂存文件.我相信这是因为我更新了bundler,因为更改是:
-
- BUNDLED WITH
- 1.10.5
Run Code Online (Sandbox Code Playgroud)
首先,这些不起作用,因为Gemfile.lock会更新自己:
git checkout -- Gemfile.lock
git stash save --keep-index --include-untracked
git stash drop
git reset HEAD
git clean -df
git checkout -- .
Run Code Online (Sandbox Code Playgroud)
有用的是:
git update-index --assume-unchanged Gemfile.lock
Run Code Online (Sandbox Code Playgroud)
看起来没问题,运行"git status":
On branch develop
Your branch is up-to-date with 'origin/develop'.
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)
我无法运行"git checkout origin/existing_branch"
error: Your local changes to the following files would be overwritten by checkout:
Gemfile.lock
Please, commit your changes or stash them before you can switch …Run Code Online (Sandbox Code Playgroud) gemfile.lock ×3
bundler ×2
git ×2
heroku ×2
ruby ×2
capistrano ×1
docker ×1
gem ×1
github-pages ×1
gitignore ×1
jekyll ×1
mercurial ×1
windows ×1
xxe ×1