Ответ 1
Ruby 2.1.2, к сожалению, не поддерживается отладчиком. Вместо этого используйте beebug gem. Подробнее см. обсуждение.
Я запускаю Rails v4.0.2 на Mac OS 10.9.2, и у меня все было гладко. Внезапно я получаю сообщение об ошибке, когда я пробовал rails server
. Я запускаю установку пакета, и это результат:
Fetching gem metadata from https://rubygems.org/.......
Fetching additional metadata from https://rubygems.org/..
Using rake 10.1.1
Using i18n 0.6.9
Using minitest 4.7.5
Using multi_json 1.9.0
Using atomic 1.1.16
Using thread_safe 0.2.0
Using tzinfo 0.3.39
Using activesupport 4.0.2
Using builder 3.1.4
Using erubis 2.7.0
Using rack 1.5.2
Using rack-test 0.6.2
Using actionpack 4.0.2
Using mime-types 1.25.1
Using polyglot 0.3.4
Using treetop 1.4.15
Using mail 2.5.4
Using actionmailer 4.0.2
Using activemodel 4.0.2
Using activerecord-deprecated_finders 1.0.3
Using arel 4.0.2
Using activerecord 4.0.2
Using encryptor 1.3.0
Using attr_encrypted 1.3.2
Using awesome_print 1.2.0
Using bcrypt 3.1.7
Using bcrypt-ruby 3.1.5
Using net-ssh 2.8.0
Using net-scp 1.1.2
Using tins 1.0.0
Using term-ansicolor 1.3.0
Using sshkit 1.3.0
Using capistrano 3.1.0
Using capistrano-bundler 1.1.2
Using capistrano-rails 1.1.1
Using climate_control 0.0.3
Using cocaine 0.5.3
Using coderay 1.1.0
Using coffee-script-source 1.7.0
Using execjs 2.0.2
Using coffee-script 2.2.0
Using thor 0.18.1
Using railties 4.0.2
Using coffee-rails 4.0.1
Using columnize 0.3.6
Using currencies 0.4.2
Using countries 0.9.3
Using debugger-linecache 1.2.0
Using debugger-ruby_core_source 1.3.2
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/Users/aaronpardes/.rvm/rubies/ruby-2.1.2/bin/ruby extconf.rb
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/Users/aaronpardes/.rvm/rubies/ruby-2.1.2/bin/ruby
/Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1573:in `stat': No such file or directory @ rb_file_s_stat - ./212/ruby_debug.h (Errno::ENOENT)
from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1573:in `block in fu_each_src_dest'
from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1587:in `fu_each_src_dest0'
from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1571:in `fu_each_src_dest'
from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:399:in `cp'
from extconf.rb:83:in `block in <main>'
from extconf.rb:82:in `each'
from extconf.rb:82:in `<main>'
extconf failed, exit code 1
Gem files will remain installed in /Users/aaronpardes/.rvm/gems/[email protected]/gems/debugger-1.6.6 for inspection.
Results logged to /Users/aaronpardes/.rvm/gems/[email protected]/extensions/x86_64-darwin-13/2.1.0-static/debugger-1.6.6/gem_make.out
An error occurred while installing debugger (1.6.6), and Bundler cannot continue.
Make sure that `gem install debugger -v '1.6.6'` succeeds before bundling.
Когда я пытаюсь запустить gem install debugger -v '1.6.6'
, я получаю следующий вывод:
Building native extensions. This could take a while...
ERROR: Error installing debugger:
ERROR: Failed to build gem native extension.
/Users/aaronpardes/.rvm/rubies/ruby-2.1.2/bin/ruby extconf.rb
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/Users/aaronpardes/.rvm/rubies/ruby-2.1.2/bin/ruby
/Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1573:in `stat': No such file or directory @ rb_file_s_stat - ./212/ruby_debug.h (Errno::ENOENT)
from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1573:in `block in fu_each_src_dest'
from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1587:in `fu_each_src_dest0'
from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:1571:in `fu_each_src_dest'
from /Users/aaronpardes/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/fileutils.rb:399:in `cp'
from extconf.rb:83:in `block in <main>'
from extconf.rb:82:in `each'
from extconf.rb:82:in `<main>'
extconf failed, exit code 1
Gem files will remain installed in /Users/aaronpardes/.rvm/gems/[email protected]/gems/debugger-1.6.6 for inspection.
Results logged to /Users/aaronpardes/.rvm/gems/[email protected]/extensions/x86_64-darwin-13/2.1.0-static/debugger-1.6.6/gem_make.out
Я очень смущен, почему эта ошибка возникла внезапно. Я работаю без проблем в течение нескольких недель. Я пробовал создать новый gemset с rvm и все еще сталкивался с той же проблемой. После поиска я сначала нашел рекомендации по обновлению зависимостей, а затем попробовал bundle install
, но это не решило проблему.
Ruby 2.1.2, к сожалению, не поддерживается отладчиком. Вместо этого используйте beebug gem. Подробнее см. обсуждение.
Ruby 2.x не поддерживается камнем отладчика, и вы должны использовать byebug. После выпуска Rails 4.2.0 (или если вы используете версии Rails 4.2.0rc) byebug будет стандартным отладчиком, включенным в ваш Gemfile, но если вы используете более раннюю версию Rails, вам необходимо внести изменения вручную в Gemfile.
Просто замените
gem "debugger"
с
gem "byebug"
в вашем Gemfile и запустите bundle install
.
Даже рекомендация изготовителя отладчика-самоцвета делает эту рекомендацию. Заметка:= "https://github.com/cldwalker/debugger#known-issues" rel= "noreferrer" > note:
- Поддерживаются только версии 1.9.2 и 1.9.3. Для 2.X рубинов рассмотрите возможность использования byebug.
Составитель не намерен исправлять это; он закрыл проблему отладчик не может быть установлен на ruby 2.X нефиксирован, объясняя, что отладчик никогда не поддерживал Ruby 2.X должным образом и что он сейчас рекомендует byebug.
Кроме того, сопровождающий отладчик не нажал на фиксацию или даже ответил на запрос на вытягивание с июня 2014 года. Кажется, что этот камень является отказом.
Rails сам принял byebug в качестве официального отладчика для Ruby 2.X от этого запроса на перенос в апреле и из Rails 4.2.0 далее Gemfile, созданный при запуске rails new my_new_app_name
, будет ссылаться на byebug
вместо debugger
для пользователей Ruby 2.X.
отладчик мертв. Использовать byebug.
Это чудовище команды закончило делать трюк для меня:
gem install debugger-ruby_core_source && ARCHFLAGS="-I$(dirname -- "$(gem which debugger/ruby_core_source/ruby-$(ruby -v | awk '{sub(/p/, "-p", $2); print $2}')/vm_core.h)") -include vm_core.h" bundle install
Мои извинения.
Разрушение:
Сначала установите заголовки Ruby.
gem install debugger-ruby_core_source
Теперь, если это удается, мы хотим запустить bundle install
, но он должен иметь возможность находить те заголовки Ruby. Грепируя вывод gem contents debugger-rebuy_core_source
, мы обнаруживаем, что он устанавливает кучу разных заголовков для разных патчей уровня Ruby:
$ gem contents debugger-ruby_core_source | grep vm_core.h
/Users/andrew/.gem/ruby/2.0.0/gems/debugger-ruby_core_source-1.3.2/lib/debugger/ruby_core_source/ruby-1.9.2-p290/vm_core.h
/Users/andrew/.gem/ruby/2.0.0/gems/debugger-ruby_core_source-1.3.2/lib/debugger/ruby_core_source/ruby-1.9.2-p318/vm_core.h
/Users/andrew/.gem/ruby/2.0.0/gems/debugger-ruby_core_source-1.3.2/lib/debugger/ruby_core_source/ruby-1.9.2-p320/vm_core.h
...
Каков текущий уровень патча?
$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
Чтобы преобразовать это в формат ruby-2.0.0-p318
, используемый камнем debugger-ruby_core_source
, мы используем awk
для печати только второго поля этой строки версии и сменим p
на -p
:
$ ruby -v | awk '{sub(/p/, "-p", $2); print $2}'
2.0.0-p481
Теперь мы запустим bundle install
, с ARCHFLAGS
установите для добавления каталог, содержащий заголовки ruby, к пути поиска файла include и preload vm_core.h
:
gem install debugger-ruby_core_source \
&& ARCHFLAGS="-I$(dirname -- \
"$(gem which debugger/ruby_core_source/ruby-$(ruby -v | awk '{sub(/p/, "-p", $2); print $2}')/vm_core.h)") \
-include vm_core.h" \
bundle install
то есть.,
gem install debugger-ruby_core_source \
&& ARCHFLAGS="-I<path-to-dir_containing_vm_core.h> -include vm_core.h" \
bundle install
Для тех, кто использует gem 'pry-debugger'
, просто измените его на gem 'pry-byebug'
в Gemfile
.
К сожалению, ответ не решил эту проблему. Как уже было сказано nickh, "Ruby 2.1.2 не поддерживается отладчиком".
Я нашел японский пост, который позволил мне установить этот камень, но я не беру на это никакой ответственности, так как это не официальный релиз. Сделайте это на свой страх и риск:
git clone https://github.com/mekishizufu/debugger.git
cd debugger
git checkout ca451a9bdf
gem build debugger.gemspec
gem install debugger-1.6.6.gem
**Step 1** [email protected]:~/workspace (master) $ rails --version Could not find debugger-1.6.6 in any of the sources Run `bundle install` to install missing gems. **Step 2** [email protected]:~/workspace (master) $ debugger-1.6.6 bash: debugger-1.6.6: command not found **Step 3** [email protected]:~/workspace (master) $ gem install debugger -v '1.6.6' Building native extensions. This could take a while... Successfully installed debugger-1.6.6 1 gem installed **Step 4** [email protected]:~/workspace (master) $ bundle install