我在用docker compose run --service-ports --detach [SERVICE_NAME]
命令初始化的容器中运行公共Ruby on rails Web应用程序停靠镜像(GitLab).
我的目标是使用binding.pry
个断点在Image的源代码中调试特定的函数.为了避免初始bundle install
出现问题,我使用docker exec [CONTAINER_ID] /bin/bash
&;&;gem install pry-rails
安装了nessesary pry-rails
gem.
我得到一个undefined method
错误,尽管pry-rails
创业板是安装和必需的.
docker attach
个实例对应的日志(log):
==> /var/log/gitlab/gitlab-rails/production.log <==
ActionView::Template::Error (undefined method `pry' for #<Binding:0x00007ff556ce52b8>
Did you mean? try):
以下是已安装pry-rails
的确认信息:
root@3cbe23da9b57:/# gem list | grep pry-rails
pry-rails (0.3.9)
root@3cbe23da9b57:/# gem which pry-rails
/opt/gitlab/embedded/lib/ruby/gems/3.0.0/gems/pry-rails-0.3.9/lib/pry-rails.rb
使用以下代码块,Gemfile
内部需要pry-rails
:
group :development, :test do
gem 'pry-rails', '~> 0.3.9'
end
gem env
输出:
RubyGems Environment:
- RUBYGEMS VERSION: 3.4.14
- RUBY VERSION: 3.0.6 (2023-03-30 patchlevel 216) [x86_64-linux]
- INSTALLATION DIRECTORY: /opt/gitlab/embedded/lib/ruby/gems/3.0.0
- USER INSTALLATION DIRECTORY: /root/.local/share/gem/ruby/3.0.0
- RUBY EXECUTABLE: /opt/gitlab/embedded/bin/ruby
- GIT EXECUTABLE: /opt/gitlab/embedded/bin/git
- EXECUTABLE DIRECTORY: /opt/gitlab/embedded/bin
- SPEC CACHE DIRECTORY: /root/.local/share/gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /opt/gitlab/embedded/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /opt/gitlab/embedded/lib/ruby/gems/3.0.0
- /root/.local/share/gem/ruby/3.0.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => true
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /opt/gitlab/embedded/bin
- /opt/gitlab/bin
- /assets
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin