Rails новый app_name не удается из-за проблемы Sqlite3 - PullRequest
0 голосов
/ 14 февраля 2019

В Windows 10 64bit

Используя Railsinstaller, я установил пакет, необходимый для сборки моего приложения.

После установки я проверил версии:

$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]

$ rails -v
Rails 5.2.2

$ gem -v
2.5.2

$ bundler -v
Bundler version 2.0.1

$ sqlite3 --version
3.8.7.2 2014-11-18 20:57:56 2ab564bf9655b7c7b97ab85cafc8a48329b27f93

ЗатемЯ запустил rails new my_app_name, который закончился этими ошибками:

mkmf.log

package configuration for sqlite3 is not found
find_header: checking for sqlite3.h... -------------------- no

"gcc -o conftest.exe -IC:/RailsInstaller/Ruby2.3.3/include/ruby-2.3.0/i386-mingw32 -IC:/RailsInstaller/Ruby2.3.3/include/ruby-2.3.0/ruby/backward -IC:/RailsInstaller/Ruby2.3.3/include/ruby-2.3.0 -I. -DFD_SETSIZE=2048 -D_WIN32_WINNT=0x0501 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O3 -fno-omit-frame-pointer -fno-fast-math -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat conftest.c  -L. -LC:/RailsInstaller/Ruby2.3.3/lib -L.      -lmsvcrt-ruby230  -lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi  "
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <winsock2.h>
4: #include <windows.h>
5: int main(int argc, char **argv)
6: {
7:   return 0;
8: }
/* end */

"gcc -E -IC:/RailsInstaller/Ruby2.3.3/include/ruby-2.3.0/i386-mingw32 -IC:/RailsInstaller/Ruby2.3.3/include/ruby-2.3.0/ruby/backward -IC:/RailsInstaller/Ruby2.3.3/include/ruby-2.3.0 -I. -DFD_SETSIZE=2048 -D_WIN32_WINNT=0x0501 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64   -O3 -fno-omit-frame-pointer -fno-fast-math -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -Wdeprecated-declarations -Wno-packed-bitfield-compat  conftest.c -o conftest.i"
conftest.c:5:21: fatal error: sqlite3.h: No such file or directory
compilation terminated.
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <winsock2.h>
4: #include <windows.h>
5: #include <sqlite3.h>
/* end */

--------------------

И gem_make.out

current directory: C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/sqlite3-1.4.0/ext/sqlite3
C:/RailsInstaller/Ruby2.3.3/bin/ruby.exe -r ./siteconf20190214-3564-1lpwzs0.rb extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Install SQLite3 from http://www.sqlite.org/ first.
*** 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=C:/RailsInstaller/Ruby2.3.3/bin/$(RUBY_BASE_NAME)
    --with-sqlcipher
    --without-sqlcipher
    --with-sqlite3-config
    --without-sqlite3-config
    --with-pkg-config
    --without-pkg-config
    --with-sqlcipher
    --without-sqlcipher
    --with-sqlite3-dir
    --without-sqlite3-dir
    --with-sqlite3-include
    --without-sqlite3-include=${sqlite3-dir}/include
    --with-sqlite3-lib
    --without-sqlite3-lib=${sqlite3-dir}/lib

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/extensions/x86-mingw32/2.3.0/sqlite3-1.4.0/mkmf.log

extconf failed, exit code 1

Я новичок в Ruby, и это моя первая попытка создать приложение, чтобы я мог экспериментировать.Мне кажется, что проблема связана с версией Sqlite3.Я попытался обновить его с помощью gem и bundle, но снова получил ошибку.

1 Ответ

0 голосов
/ 22 февраля 2019

У меня та же проблема, и вот два решения, которые я нашел.1 * После того, как установка пакета не может войти в папку проекта и изменить Gemfile

gem 'sqlite3',  '1.3.11'

, эта строка изменит его на некоторые из этих 3 ниже

gem 'sqlite3', git: "https://github.com/sparklemotion/sqlite3-ruby"

gem 'sqlite3', git: "https://github.com/sparklemotion/sqlite3-ruby", branch: "add-gemspec"

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"

Это работает, только если высначала установили Ruby Devkit или RubyInstaller, а затем установщик Rails, в противном случае папка Ruby установщика Rails будет выбрана системой как «папка ruby»

2 *, вам придется удалить RailsInstaller и удалить оставшуюся папку (есливы не удаляете папку вручную после завершения деинсталлятора, когда вы выполняете команду gem, она говорит, что папка «RailsInstaller / Ruby2.3.3 / bin» не найдена) Хорошо, после установки rails с помощью командной строки

gem install rails

И установить из командной строки MinGW

C:\Sites>ridk exec pacman -S mingw-w64-x86_64-dlfcn

Скачать файл gem из https://rubygems.org/, сохранить его локально и установить из файла

gem install --local C:\sqlite3-1.4.0.gem

Это второе решение работает глобальнопоэтому вы должны запустить его только один раз, и в следующий раз, когда вы выполните rails new blog, проблема с sqlite больше не появится.Просто убедитесь, что вы выполнили его в папке «Сайты», а не внутри какого-либо проекта, или он будет работать только для этого проекта.

Если вам подходит какой-либо из этих способов, пожалуйста, не стесняйтесь попробовать один из методов, которые я упомянул здесь https://mycodeissuesandfixes.blogspot.com/2019/02/ruby-on-rails-issue-about-sqlite-3-gem.html, я пытался найти решение этой проблемы более недели.

Удачи!Надеюсь, это поможет вам

...