سؤال

حصلت على Ruby 1.8.7 (تجميع الأصلي) ، Rails 2.3.4 ، OSX 10.6.2 وكذلك sqlite3-ruby.

الخطأ الذي أحصل عليه عند الوصول إلى تطبيق Rails

NameError: SQLite3 :: Driver :: Native :: Driver :: API

تاريخ:
لقد قمت بالترقية إلى Snow Leopard عن طريق ترحيل تطبيقاتي باستخدام FW-Cable من جهاز Macbook القديم إلى جهاز Macbook القديم إلى الجهاز الجديد. كان كل شيء يعمل بشكل مثالي لعدة أشهر ، لكن بالأمس كنت بحاجة إلى تثبيت Watir ، الذي كان يعتمد على RB-Appscript ، والذي لم يبني بسبب خطأ "بنية خاطئ" في libsqlite3.dylib. اعتقدت أن البناء قد صنع على الجهاز القديم ، لذلك أردت إعادة بناء sqlite3-ruby:

$ sudo gem uninstall sqlite3-ruby

$ sudo GEM تثبيت sqlite3-ruby

بناء الامتدادات الأصلية. وهذا يمكن أن يستغرق بعض الوقت...
خطأ: خطأ في تثبيت SQLITE3-RUBY:
خطأ: فشل في بناء الامتداد الأصلي GEM.

/usr/local/bin/ruby extconf.rb
التحقق من fdatasync () في -lrt ... لا
التحقق من sqlite3.h ... نعم
التحقق من sqlite3_open () في -lsqlite3 ... لا
* extconf.rb فشل *
لا يمكن إنشاء Makefile بسبب بعض الأسباب ، وربما عدم وجودها
المكتبات و/أو الرؤوس اللازمة. تحقق من ملف mkmf.log للمزيد
تفاصيل. قد تحتاج خيارات التكوين.

يبدو أن libs sqlite3 لا يعمل بشكل صحيح. لقد حاولت تثبيت MacPorts SQLite3 (منفذ Sudo تثبيت SQLite3) واستخدم ذلك بدلاً من ذلك ، ولكن بنفس النتيجة ... لذلك أقوم بإعادة بناء SQLite3 من نقطة الصفر .. تنزيل-> تكوين-> Make-> جعل التثبيت. بعد ذلك ، تبني الأحجار الكريمة الآن بشكل مثالي ، لكنها لا تعمل في القضبان ، مما يعطي الخطأ في الجزء العلوي من هذه المقالة.

لست متأكدًا حقًا من أين أذهب من هنا لأنني جربت ما يلي

  1. إعادة بناء SQLite3 من أحدث مصدر (http://www.sqlite.org/download.html)
  2. إعادة تثبيت SQLITE3-RUBY (SUDO GEM UNINSTALL SQLITE3-RUBY && SUDO GEM تثبيت SQLITE3-RUBY)
  3. يستخدم SQLite3 من MacPorts (Port Sudo تثبيت SQLite3 && Sudo GEM تثبيت SQLite3-Ruby)
  4. إعادة تثبيت Rails (Sudo GEM تثبيت Rails SQLite3-Ruby) و evesice. RB إلى Rails 2.3.5.

دون جدوى ، ما زلت أحصل على هذا الخطأ:

NameError: SQLite3 :: Driver :: Native :: Driver :: AP
من /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:105:in const_missing'
from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/driver/native/driver.rb:76:in
افتح'
من /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.5/lib/sqlite3/database.rb:76:in `تهيئة '

راجع للشغل ، لدي Xcode مثبت من القرص المضغوط Leopard Snow.

ماذا يمكنني أن أفعل لحل المشكلة؟

هل كانت مفيدة؟

المحلول 2

شكرا على الإجابات. هذا ما فعلته لحل المشكلة:

  1. إعادة تثبيت Ruby1.8.7 إلى /usr /محلي ، انظر هنا: http://hivelogic.com/articles/ruby-roils-leopard

    ملاحظة: لم يكن Readline يعمل عند إعادة تجميع Ruby على جهاز Mac الخاص بي ، لذلك اضطررت إلى إنشاء ذلك أيضًا من نقطة الصفر والتأكد من إضافة خيار-مع القراءة-DIR لتكوين:

    ./configure-مشاركة قابلة للتمكين-cflags-phreadable = -d_xopen_source = 1-prefix =/usr/local-with-readline-dir =/usr/local

  2. إعادة تثبيت SQLite3 إلى /usr /محلي

  3. أعد بناء جميع الأحجار الكريمة على النظام باستخدام GEM Sudo تثبيت XXX ، بما في ذلك SQLite3-Ruby. هذا ضروري فقط مع الأحجار الكريمة المحددة للمنصة ، لكنني وجدت أنه أسرع فقط لتثبيت كل شيء في Oneliner:

    Sudo GEM Install GEM1 GEM2 ... Gemn-No-Ri-No-Rdoc

حاولت الذهاب مع Ruby1.9 ، لكن كل شيء توقف عن العمل بسبب التبعيات المكسورة في الأحجار الكريمة والمكونات الإضافية ، لذلك لا أوصي بالتبديل إلى 1.9 إلا إذا كنت على استعداد لبعض الأخطاء الثقيلة ومعرفة كيفية استعادة نظامك القديم!

أخيرًا ، كل شيء يعمل مرة أخرى!

نصائح أخرى

كانت مشكلتي مختلفة بعض الشيء ، وفي الواقع لم تنجح الحلول التي وجدتها عبر الإنترنت.

عند محاولة تثبيت SQLite3-Ruby بعد الترقية إلى Snow Leopard و Xcode 4.0 ، تلقيت الرسالة

checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 is missing. Try 'port install sqlite3 +universal' or 'yum install sqlite3-devel'

ومع ذلك ، تم تثبيت SQLite3 ، وأيضًا لم يساعد إعادة التثبيت. لقد حصلت بالفعل على letrb le من قبل مع إصدارات 64 بت وعالمية ، لكنني قمت بتطهيرها أيضًا. في الواقع ، يمكنني العمل مع SQLite3.

لذلك يجب أن يخبرك تثبيت GEM أيضًا بشيء على هذا المنوال:

Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.3.1 for inspection.

لذا قرص مضغوط لهذا الدليل وهناك يبحث عن extconf.rb ، كان لي في ./EXT/SQLITE3/EXTCONF.RB لقد وجدت أن روبي كان يتحقق من مكتبة SQLITE3 باستخدام

asplode('sqlite3') unless find_library 'sqlite3', 'sqlite3_libversion_number'

لذلك أطلقت IRB وفحصت لماذا لم ينجح هذا:

  require 'mkmf'
   find_library 'sqlite3', 'sqlite3_libversion_number'

حسنًا ، في الواقع ، هذا يعمل ويجد Ruby المكتبة. فلماذا لا يعمل من الإعداد؟ أظهر فحص extconf.rb عن كثب السطر التالي:

  sqlite = dir_config('sqlite3', ['/usr/local', '/opt/local', '/usr'])

عندما أقوم بتنفيذ هذا في IRB:

require 'mkmf'
  sqlite = dir_config('sqlite3', ['/usr/local', '/opt/local', '/usr']) 
  find_library 'sqlite3', 'sqlite3_libversion_number'

من غير المدهش أن أجد المكتبة بعد الآن. في الحقيقة أنا لا أفهم كيف يمكن أن يكون هذا ، ولكن هذا ما يحدث.

لذلك هذا هو العلاج: التعليق على الخط

sqlite = dir_config('sqlite3', ['/usr/local', '/opt/local', '/usr'])

في extconf.rb

ثم من /library/ruby/gems/1.8/gems/sqlite3-ruby-1.3.1 أصدر

 sudo ruby ./setup.rb

لقد مر بذلك دون أي مشاكل (حاولت قبل التعليق على خط sqlite = ، ولم ينجح)

إعادة تشغيل تطبيق Ruby الذي كان لديه مشاكل مع SQLite. يعمل بشكل جيد.

امل ان يساعد هذا احد.

بوظة

لقد وجدت بعض التوجيهات حول هذا في مدونة دون بارك على:

http://blog.docuverse.com/2009/09/24/installing-sqlite3-ruby-gem-on-snow-leopard/

يشير حله إلى العودة مباشرة إلى مكدس الفائض في الموضوع التالي:

Snow Leopard ، Sqlite3-Ruby

يبدو أن الجواب حول أمر LN قد حل مشكلتي. امل ان اساعدك ايضا.

إذا لم تكن الجوهرة لا تبني ذلك ، فلا تحتاج بالضرورة إلى إعادة بناء SQLITE3 من المصدر ، ولكن لبناء جوهرة ، ستطلب من مكتبات مطور SQLITE3.

على معظم أنظمة Linux/Unix ، يمكنك تثبيتها عن طريق القيام بـ Sudo Apt-Get Install SQLite3-Dev "، ومع ذلك ، لست متأكدًا من كيفية عملها مع MacPorts-ولكن تأكد من أن لديك هذه الحزمة. يجب عليك التأكد من أنها في طريقك أو تمرير DIR الذي يقومون به عند تثبيت الأحجار الكريمة (انظر إخراج الأحجار الكريمة للحصول على تلميحات فيما يتعلق بخيارات القيام بذلك).

لدي SQLITE3 يعمل على جهاز Mac الخاص بي على ما يرام ، على حد سواء مع 1.8.7 والآن بلدي تحديث 1.9.1 روبي. قد ترغب في التأكد من تثبيت أدوات مطور XCode أيضًا.

بالنسبة لأولئك الموجودين في Snow Leopard 64 ووجود هذه المشكلة في تثبيت Macport هذه المشكلة بالنسبة لي.

sudo port install rb-sqlite3 +universal
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top