gpt4 book ai didi

ruby-on-rails - 如何让 Rake 任务在我的 Sinantra 应用程序/环境下运行?

转载 作者:数据小太阳 更新时间:2023-10-29 06:46:39 26 4
gpt4 key购买 nike

我正在使用 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 任务可以在其下运行。任何帮助将不胜感激。

最佳答案

我已经使用一种类似 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

关于ruby-on-rails - 如何让 Rake 任务在我的 Sinantra 应用程序/环境下运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com