Gemfile.lock is for apps, not libraries Gemfile.lock是未了保证运行环境一致性而产生的,这样可以最大限度的减少因为环境差异所造成的运行异常。 但如果你写的是个library,那么你则应该抛弃gemfile.lock以确保library的通用性。
当执行bundle install时,需要根据Gemfile或者Gemfile.lock下载指定的ruby gems。 bundler-cache with: path: vendor/bundle # 2 key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock 根据当前的操作系统和Gemfile.lock文件哈希的表达式生成缓存key作为搜索缓存的键。 当操作系统或者Gemfile.lock发生改变时,重新生成key值;当key匹配现有缓存时,被称为缓存命中,并且操作会将缓存的文件还原到path目录; 4. restore-keys:可选。
onbuild 创建的位置为 app 项目的根,Gemfile 的旁边 [root@h104 blog2]# ls app bin config config.ru db Gemfile Gemfile.lock Rails 容器镜像 注意目录在 app 项目的根一层 [root@h104 blog2]# ls app bin config config.ru db Dockerfile Gemfile Gemfile.lock Step 1 : COPY Gemfile /usr/src/app/ Step 1 : COPY Gemfile.lock /usr/src/app/ Step 1 : RUN bundle install
/lobsters/Gemfile.lock /lobsters/ ARG DEVELOPER_BUILD=false RUN set -xe; \ apk add --no-cache --virtual CMD ["/usr/local/bin/docker-entrypoint.sh"] 然而因为要对 lobsters 进行用户系统对接等修改,Gemfile / Gemfile.lock 不可避免的需要更新 所以在 Gemfile.lock 中,可以直接删除 BUNDLED WITH 相关版本配置,另外可以将上一回合添加的安装旧版本的 bundler 命令从 Dockerfile 也删除掉。 中的说明,推测还是得在 Gemfile.lock 中指定的 Bundler 软件版本。 但是实际测试,不论是在 Gemfile.lock 中声明最初的2.0.2,还是当前最新的 2.1.4 ,都无济于事。
cache: key: files: - Gemfile.lock - package.json paths: - vendor/ruby - node_modules cache: key: files: - Gemfile.lock prefix: ${CI_JOB_NAME} paths: - vendor/ruby 添加$CI_JOB_NAME prefix将使密钥看起来像:rspec-feef9576d21ee9b6a32e30c5c79d0a0ceb68d1e5 ,并且作业缓存在不同分支之间共享,如果分支更改了Gemfile.lock 如果Gemfile.lock未发生变化 ,则将前缀添加default ,因此示例中的键为rspec-default 。
修改Gemfile.lock和Gemfile中的ruby版本,更改成系统中的版本 3. 将ruby版本回退到项目需要的版本
/lobsters/Gemfile.lock /lobsters/ ARG DEVELOPER_BUILD=false RUN set -xe; \ apk add --no-cache CMD ["/usr/local/bin/docker-entrypoint.sh"] 然而因为要对 lobsters 进行用户系统对接等修改,Gemfile / Gemfile.lock 不可避免的需要更新 所以在 Gemfile.lock 中,可以直接删除 BUNDLED WITH 相关版本配置,另外可以将上一回合添加的安装旧版本的 bundler 命令从 Dockerfile 也删除掉。 中的说明,推测还是得在 Gemfile.lock 中指定的 Bundler 软件版本。 但是实际测试,不论是在 Gemfile.lock 中声明最初的2.0.2,还是当前最新的 2.1.4 ,都无济于事。
./ .gitignore Gemfile Gemfile.lock README.rdoc Rakefile config.ru app/ app/assets/ app/assets/images/ blog2 -r [root@h104 tmp]# cd blog2 [root@h104 blog2]# ls app bin config config.ru db Gemfile Gemfile.lock
en.yml │ ├── routes.rb │ └── secrets.yml ├── config.ru ├── db │ └── seeds.rb ├── Gemfile ├── Gemfile.lock
Gemfile, Gemfile.lock 这两个文件用来指定程序所需的 gem 依赖件,用于 Bundler gem。关于 Bundler 的详细介绍,请访问 Bundler 官网 。
/dev/ci/**/Gemfile.lock
plan generated Example plan generated Example plan generated [root@h102 forklift]# ls config Gemfile Gemfile.lock mysql │ │ ├── destination.yml │ │ └── source.yml │ └── email.yml ├── Gemfile ├── Gemfile.lock
commands: - checkout - cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock bundle install --deployment --path .bundle - cache store gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock commands: - checkout - cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock install --deployment --path .bundle - cache store gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock commands: - checkout - cache restore gems-$SEMAPHORE_GIT_BRANCH-$(checksum Gemfile.lock
<mpapis@gmail.com> [https://rvm.io/] [root@h202 blog]# ls app bin config config.ru db Gemfile Gemfile.lock
Gemfile LICENSE README.md vercel.json CHANGELOG.md CONTRIBUTORS.md Dockerfile Gemfile.lock ruby:3.2-alpine WORKDIR /app ADD _config.yml /app/ ADD _config_prod.yml /app/ ADD Gemfile /app/ ADD Gemfile.lock
<mpapis@gmail.com> [https://rvm.io/] [root@h202 blog]# ls app bin config config.ru db Gemfile Gemfile.lock
. ├── 404.html ├── about.md ├── _config.yml ├── Gemfile ├── Gemfile.lock ├── index.md ├── _posts │ 将配置文件和内容文件解析为新目录,_site开始提供该_site文件夹中的内容: ... ├── 404.html ├── about.md ├── _config.yml ├── Gemfile ├── Gemfile.lock
/setup.sh $ source ~/.bashrc $ rm Gemfile.lock $ bundle install Hint: You will need to enable telemetry sudo apt update sudo apt-get install ruby2.6 ruby2.6-dev sudo gem install bundle source ~/.bashrc rm Gemfile.lock /setup.sh $ source ~/.bashrc $ rm Gemfile.lock $ bundle install 安装成功后会有如图6-3所示的提示。
. ├── 404.html ├── about.md ├── _config.yml ├── Gemfile ├── Gemfile.lock ├── index.md ├── _posts │ 将配置文件和内容文件解析为新目录,_site开始提供该_site文件夹中的内容: ... ├── 404.html ├── about.md ├── _config.yml ├── Gemfile ├── Gemfile.lock
如果插件版本报错,修改的gemfile.lock,记得备份,是否可以删除? 3.