NoMethodError: undefined метод `split 'для nil: NilClass при запуске & ldquo; rake native gem & rdquo; [Дубликат]

В дополнение к ответу bobince ...

С помощью Ajax вы можете подключить / отключить ссылку «Выход» к функции Javascript. Попросите эту функцию отправить XMLHttpRequest с плохим именем пользователя и паролем. Это должно вернуть 401. Затем верните документ.location на страницу предварительного входа. Таким образом, пользователь никогда не увидит дополнительное диалоговое окно входа в систему во время выхода из системы и не должен забывать вводить плохие учетные данные.

32
задан Community 23 May 2017 в 12:02
поделиться

7 ответов

Несмотря на то, что на вопрос был дан ответ, я хочу опубликовать свое исследование, чтобы помочь другим. Я нашел много информации в Интернете, но, будучи новичком в Ruby, мне пришлось тяжело следить за всеми. Основной ответ получен из следующего сообщения https://github.com/luislavena/sqlite3-ruby/issues/82 с инструкциями «paulwis» о том, как правильно установить sqlite3 для ruby ​​2.0.0- p0 и некоторые комментарии по https://github.com/rails/rails/issues/10150 . Так вот:

  1. Установите Ruby Devkit для вашей установки (DevKit-mingw64-64-4.7.2-201302424-1432-sfx.exe для меня, так как я использую машину x64)
  2. Загрузите и извлеките пакет autoconf из Sqlite.org
  3. Запустите msys.bat (он находится внутри корневой папки ruby ​​devkit)
  4. cd в путь, где вы скачал источник sqlite (например: «cd / c / dev / sqlite3» для пути «c: \ dev \ sqlite3», если вы новичок в MSYS / MINGW32)
  5. Запустите «./configure»
  6. Запустить «make»
  7. Запустить «make install»
  8. Получить жемчужину sqlite3 снова, на этот раз указав платформу и путь к вновь скомпилированным двоичным файлам:
    gem install sqlite3 --platform=ruby -- --with-sqlite3-include=[path\to\sqlite3.h] --with-sqlite3-lib=[path\to\sqlite3.o]
    
    Например:
    gem install sqlite3 --platform=ruby -- --with-sqlite3-include=/c:/dev/sqlite3/ --with-sqlite3-lib=/c:/dev/sqlite3/.libs/
    
    (из путей, указанных на шаге 4)
  9. Проверьте Gemfile.lock вашего приложения rails и убедитесь, что он указывает на правильную версию sqlite3. Шахта была «sqlite3 (1.3.7-x86-mingw32)» и вручную изменила ее на «sqlite3 (1.3.7-x64-mingw32)». Удаление платформы также работает: «sqlite3 (1.3.7)».

Надеюсь, это кому-то поможет.

71
ответ дан bonh 20 August 2018 в 10:50
поделиться
  • 1
    Большое спасибо за это! К сожалению, шаг № 8 мне не удалось: C: /Ruby200-x64/bin/ruby.exe extconf.rb --with-sqlite3-include = c: \ sqlite-auto conf-3071602 \ sqlite3.h --with-sqlite3- lib = c: \ sqlite-autoconf-3071602 \ .libs \ sqlit e3.o проверка для sqlite3.h ... *** extconf.rb не удалось *** Не удалось создать Makefile по какой-то причине, возможно, отсутствовали необходимые библиотеки и / или заголовки. Подробнее читайте в файле mkmf.log. Вам могут понадобиться параметры конфигурации. – at. 13 May 2013 в 04:49
  • 2
    Наконец, чтобы установить его, проблема заключалась в том, что мне пришлось запустить команду gem install внутри терминала MINGW32. Теперь я получаю эту ошибку при запуске сервера Rails: c: /Ruby200-x64/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb: 6: in `require ': не может загрузить такой файл - sqlite3 / sqlite3_native (LoadError) – at. 13 May 2013 в 11:50
  • 3
    все отлично до шага 8. Заголовки не найдены. Я просто решил использовать виртуальный бокс (проект колледжа). – Andras Gyomrey 24 May 2013 в 21:02
  • 4
    Если у кого-то другая проблема, у меня были проблемы с шагом 8, пока я не понял, что я использовал \ вместо / в окне MINGW32. Переключение на косые черты позволило ему работать. – Pam G 14 June 2013 в 22:20
  • 5
    Для шага 8 я вывел команду из окна MINGW32 и изменил команду: gem install sqlite3 -- --with-sqlite3-include=/c/sqlite-autoconf-3071700/ --with-sqlite3-lib=/c/sqlite-autoconf-3071700/ (я извлечил исходный код на C: \ sqlite-autoconf-3071700 на моей машине) – Paul 29 June 2013 в 20:52

Я подумал, что отвечу - из комментариев, ради потомков. Проблема заключалась в том, что я схватил новую версию Ruby / Rails (для Windows), которая еще не была совместима с SQLite3.

Я понизил рейтинг до 1.9.x и смог выполнить все.

0
ответ дан chrisp 20 August 2018 в 10:50
поделиться
  • 1
    Я использую Ruby 2.0.0 и совместим с sqlite3 – jonathanrz 15 June 2013 в 23:24
  • 2
    @jonathanrz спасибо, я изо всех сил пытаюсь получить 2.0.0 для компиляции sqilte3 и рад слышать, что ваш работает. Не могли бы вы рассказать о том, какие инструкции вы следовали, чтобы заставить его скомпилировать? – Tyler Gannon 19 June 2013 в 00:16
  • 3
    @TylerGannon Я следил за путями из ответа williams, но на шаге 8 я использовал ответ denis-bu и добавил каталог libs с каталогом .libs в каталоге sqlite3. – jonathanrz 20 June 2013 в 02:50
  • 4
    После большой головной боли и разочарования, @jonathanrz говорит правду. Следуйте за ответами williams, затем скопируйте путь / в / sqlite3 / .lib вверх по каталогу, а затем запустите вызов denis-bu. Идите в команду! – phyatt 27 June 2013 в 10:14
  • 5
    @jonathanrz и @phyatt, Спасибо за помощь. Этим инструкциям удалось собрать эту информацию без ошибок. Теперь, когда я пытаюсь использовать sqlite3 из ruby, я получаю эту ошибку: 126: The specified module could not be found. - c:/Ruby200/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3/sqlite3_native.so – Tyler Gannon 29 June 2013 в 01:46

Я смог установить sqlite3 с ruby2.0.0 на win XP32 со следующей командой:

c:\>gem install sqlite3 --platform=ruby -- --with-sqlite3-dir=C:/distr/sqlite --with-sqlite3-include=C:/distr/sqlite

Папка C:/distr/sqlite содержит следующие файлы

  • shell.c
  • sqlite3.c
  • sqlite3.h
  • sqlite3ext.h
  • sqlite3.def
  • ]
  • sqlite3.dll

Итак, в основном я извлекаю sqlite-amalgamation-3071602.zip и sqlite-dll-win32-x86-3071602.zip в C:/distr/sqlite.

HEADS UP

Вам все равно нужно поместить копию sqlite3.dll и sqlite3.def где-нибудь в PATH. IMHO лучше сохранить двоичные файлы sqlite3 в папке bin ruby.

9
ответ дан denis-bu 20 August 2018 в 10:50
поделиться

Получите жирный двоичный код здесь

https://ci.appveyor.com/project/MSP-Greg/sqlite3-ruby/build/3/job/hhk6ie8gdo545svr/artifacts

и

gem install c:\path\to\downloaded_gem.gem
0
ответ дан Lyndon S 20 August 2018 в 10:50
поделиться
#!/usr/bin/env sh

mkdir c:/sqlite3x86
wget -P c:/sqlite3x86 http://packages.openknapsack.org/sqlite/sqlite-3.7.15.2-x86-windows.tar.lzma
cd c:/sqlite3x86
bsdtar --lzma -xf c:/sqlite3x86/sqlite-3.7.15.2-x86-windows.tar.lzma
gem install sqlite3 --platform=ruby -- --with-opt-dir=c:/sqlite3x86
cd c:/
rm -rf c:/sqlite3x86
1
ответ дан qkdreyer 20 August 2018 в 10:50
поделиться

Самый простой способ настроить Ruby on Rails на машине Windows - это использовать RailsInstaller, который автоматически устанавливает и настраивает sqlite3 для вас. Один шаг.

http://railsinstaller.org/en

0
ответ дан regularmike 20 August 2018 в 10:50
поделиться

Для окон перейдите к C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3.rb

и убедитесь, что

require "sqlite3" вместо native

0
ответ дан zawhtut 20 August 2018 в 10:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: