2010-09-11 11 views
10

मैं सिनात्रा का उपयोग कर रहा हूं, और मैं कुछ सुविधाजनक रेक कार्यों को स्थापित करना चाहता हूं जो रेल के पास हैं, विशेष रूप से 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 एक मणि है कि नकल करता है रेल 'सांत्वना है:

मेरी पहली पास इस था। तो मैं सीधे बीज फ़ाइल में कोड को सीधे खिला रहा था। यह काम करता है, लेकिन यह स्पष्ट रूप से आदर्श नहीं है।

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 

लेकिन क्या मैं समझ नहीं कैसे वातावरण स्थापित करने के लिए है: मुझे क्या करना चाहते हैं एक ऐसा माहौल कार्य, आदेशों Sinanta एप्लिकेशन/वातावरण के अंतर्गत चलाने के लिए अनुमति देता है कि इतने की तरह बनाने के है इसलिए रेक कार्य इसके तहत चल सकते हैं। कोई भी सहायताकाफी प्रशंसनीय होगी।

उत्तर

10

मैं रेल की तरह पर्यावरण का एक प्रकार का उपयोग कर सिनात्रा के लिए एक 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 के माध्यम से अपने सिनात्रा एप्लिकेशन को लॉन्च करने के लिए इस्तेमाल किया जा सकता है कि:

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

run Sinatra::Application 
संबंधित मुद्दे