我目前正在构建一个使用sqlite3数据库来存储来自网站的分析内容的宝石。当我在命令行中运行gem名称时,当它位于原始文件目录中时,程序运行时没有任何问题。从红宝石宝石中使用内置的sqlite3数据库
然而,当我安装宝石到另一个项目,并尝试运行它,我得到一个错误:
/usr/local/rvm/gems/ruby-2.3.1/gems/mtg-card-finder-0.1.1/config/environment.rb:8:in `initialize': unable to open database file (SQLite3::CantOpenException)
我已经创建了数据库文件lib
文件夹之外,但它在我的environment
文件中引用:
require 'open-uri'
require 'sqlite3'
require "tco"
require "mechanize"
require "nokogiri"
require "require_all"
DB = {:conn => SQLite3::Database.new("db/cards.db")} #this gives me validation to reach the database that module Persistable interacts with
require_all 'lib/mtg_card_finder' #this allows me to simultaneously require everything in lib/mtg_card_finder
然后要求通过我的主要文件中lib
:
require_relative '../config/environment'
module MTGCardFinder
end
这是我第一次构建一个红宝石,所以我知道我必须在我的gemspec上搞一些东西,或者其他一些我不知道的东西是不允许数据库在安装时可访问作为一颗宝石。
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'mtg_card_finder/version.rb'
spec.files = `git ls-files -z`.split("\x0").reject do |f|
f.match(%r{^(test|spec|features)/})
end
spec.executables << "mtg-card-finder"
spec.require_paths = ["lib"]
spec.add_development_dependency "bundler", "~> 1.14"
spec.add_development_dependency "rake", "~> 12.0"
spec.add_development_dependency "pry", "~> 0.10.4"
spec.add_dependency "rubysl-open-uri", "~> 2.0"
spec.add_dependency "nokogiri", "~> 1.7.1"
spec.add_dependency "tco", "~> 0.1.8"
spec.add_dependency "sqlite3", "~> 1.3.13"
spec.add_dependency "mechanize", "~> 2.7.5"
spec.add_dependency "require_all", "~> 1.4"
任何建议将是如此的欢迎! :) 这里是回购,如果你需要从gemspec和这些额外的线路: https://github.com/JuanGongora/mtg-card-finder
如果DB/cards.db需要在使用它的应用程序可用,我认为它不是因为gemspec中的“文件”指令会过滤掉任何不属于测试,规范或功能的内容。 – burnettk