【问题标题】:How do I make Rake tasks run under my Sinantra app/environment?如何让 Rake 任务在我的 Sinatra 应用程序/环境下运行?
【发布时间】:2011-04-11 03:59:18
【问题描述】:

我正在使用 Sinatra,我想设置 Rails 提供的一些便利 rake 任务,特别是 rake db:seed

我的第一关是这样的:

namespace :db do
  desc 'Load the seed data from db/seeds.rb'
  task :seed do
    seed_file = File.join(File.dirname(__FILE__), 'db', 'seeds.rb')
    system("racksh < #{seed_file}")
  end
end

racksh 是一个模仿 Rails 控制台的 gem。所以我只是将种子文件中的代码直接输入其中。它有效,但显然并不理想。我想做的是创建一个环境任务,允许命令在 Sinanta 应用程序/环境下运行,如下所示:

task :environment do
  # what goes here?
end

task :seed => :environment do
  seed_file = File.join(File.dirname(__FILE__), 'db', 'seeds.rb')
  load(seed_file) if File.exist?(seed_file)
end

但我不知道如何设置环境以便 rake 任务可以在其下运行。任何帮助将不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby rake sinatra


    【解决方案1】:

    我使用一种类似 Rails 的环境为 Sinatra 设置了一个 Rakefile

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

    然后您在config/environment.rb 中有一些内容,其中包含正确启动应用程序所需的内容。可能是这样的:

    require "rubygems"
    require "bundler"
    Bundler.setup
    
    require 'sinatra'
    

    将此设置放在单独的文件中可避免混淆您的Rakefile,如果您使用它,可用于通过config.ru 启动您的 Sinatra 应用程序:

    require File.expand_path(File.join(*%w[ config environment ]), File.dirname(__FILE__))
    
    run Sinatra::Application
    

    【讨论】:

      猜你喜欢
      • 2016-03-09
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 2014-12-05
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 2011-07-26
      相关资源
      最近更新 更多