Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用Sinatra时,如何从gem导入rake任务?_Ruby_Rubygems_Rake_Sinatra_Task - Fatal编程技术网

Ruby 使用Sinatra时,如何从gem导入rake任务?

Ruby 使用Sinatra时,如何从gem导入rake任务?,ruby,rubygems,rake,sinatra,task,Ruby,Rubygems,Rake,Sinatra,Task,我正在尝试向orientdb gem添加一些基本的rake任务,这些任务将允许我创建数据库、创建数据库迁移和迁移数据库—类似于rails迁移 当我在本地有rake任务时,我得到了db:settings、db:create和db:create\u迁移来工作,但是在我将它们放入gem之后,我不知道如何在使用“rake”时从Sinatra应用程序访问它们 我有一种感觉,我要么a)没有正确地组织gem中的文件,要么b)没有正确地从Sinatra应用程序调用东西 我的分叉存储库的当前状态为 我将任务的文件

我正在尝试向orientdb gem添加一些基本的rake任务,这些任务将允许我创建数据库、创建数据库迁移和迁移数据库—类似于rails迁移

当我在本地有rake任务时,我得到了db:settings、db:create和db:create\u迁移来工作,但是在我将它们放入gem之后,我不知道如何在使用“rake”时从Sinatra应用程序访问它们

我有一种感觉,我要么a)没有正确地组织gem中的文件,要么b)没有正确地从Sinatra应用程序调用东西

我的分叉存储库的当前状态为

我将任务的文件放在lib/orientdb/tasks/database.rake=>

Sinatra应用程序Rakefile

APPLICATION_ROOT = File.expand_path('..', __FILE__)

require 'rake'
require 'orientdb'
#import "orientdb/tasks/database.rake"

task :environment do
  require File.expand_path(File.join(*%w[ config environment ]), File.dirname(__FILE__))
end
配置/环境

require "rubygems"
require "bundler"
Bundler.setup

require 'sinatra'
require "orientdb"

ruby:jruby 1.6.0(ruby 1.9.2 patchlevel 136)(2011-03-24 5f5278c)(OpenJDK 64位服务器VM 1.6.020)[linux-amd64-java]

我花了10多个小时的时间试图解决这个问题,并在这个过程中修补了Rake。我提交了这个补丁:

我还写了一篇博客文章,其中包含修补代码:

[更新]

我还发现了另一种不需要rake补丁的方法,如图所示……我所要做的就是创建一个tasks.rb,并在rakefile中需要它,但要使它工作,我必须使它看起来像这样:

require 'rake'
require 'bundler'
Bundler.setup
require 'orientdb'
require 'orientdb/tasks'
不过,我仍然认为rake补丁非常酷。:)

[更新2]

同时,在拉请求被rake团队接受之前,我创建了一个名为alltasks的gem,它将加载gem文件及其依赖项中包含的所有rake任务


很好,我认为你应该因此获得一枚自学徽章。希望另外两个人会同意我的观点。顺便说一句,你可以接受你自己的答案,我认为在这种情况下这也是社会可以接受的。谢谢!我必须等到明天才接受我自己的答案,到时候我会接受的。