2014-01-06 4 views
1

С помощью некоторых уроков я сделал свой первый простой камень, который добавляет файлы Sass/CSS в каталог ресурсов/таблиц стилей приложения.Rails: создать собственный камень

Это неудобно, но проблема в том, что я не знаю, как запустить мой драгоценный камень в приложении.

gemspec:

# coding: utf-8 
lib = File.expand_path('../lib', __FILE__) 
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) 
require 'example/version' 

Gem::Specification.new do |spec| 
    spec.name   = "Example" 
    spec.version  = Example::VERSION 
    spec.authors  = ["***"] 
    spec.email   = ["***"] 
    spec.description = %q{Provide CSS styles} 
    spec.summary  = %q{Provide CSS styles} 
    spec.homepage  = "" 
    spec.license  = "MIT" 

    spec.files   = `git ls-files`.split($/) 
    spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } 
    spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) 
    spec.require_paths = ["lib"] 

    spec.add_development_dependency "bundler", "~> 1.3" 
    spec.add_development_dependency "rake" 
    spec.add_development_dependency "redcarpet", "~> 1.17" 
    spec.add_development_dependency "yard", "~> 0.7.5" 
end 

example.rb:

require "example/version" 

module Example 

    def self.install 
     original_dir = Dir["/lib/example/*.css.scss"] 
     original_dir.each do |f| 
      name = File.basename('main', '.css.scss') 
      destination_dir = "/app/assets/stylesheets/#{name}" 
      FileUtils.cp(main, destination_folder) 
     end 
    end 

end 

Rakefile:

require "bundler/gem_tasks" 
require 'yard' 
YARD::Rake::YardocTask.new 

Я считаю, что я должен написать некоторые задачи грабли, но я не уверен, как мне это сделать.

Спасибо!

+0

почему вы не знаете? добавьте ссылку на драгоценный камень в ** Gemfile проекта **, который использует драгоценный камень, следующим образом: gem 'youe_gem_name',: path => '/ path/to/your/gem/root'. затем выпустите 'bundle install' из другой папки проектов. Если это приложение для рельсов, просто запустите рельсы. И вызовите вызов на «Example.install» из конфигурации rails. –

+0

Конечно, я добавил его в Gemfile. Но, как вы можете видеть в 'example.rb', мой драгоценный камень добавляет' main.css.scss' в 'app/assets/stylesheets'. Я установил gem, но не знаю, как заставить его работать –

+0

Я вижу два несоответствия: вы оцениваете destination_dir, но затем используете destination_folder, затем вы перечисляете f, но не используете его тогда. –

ответ

1

Я узнал, как решить свою проблему. Лучший способ запустить ruby-код из gem-файла - переместить его в rails-генератор. Например создать файл lib/generators/initializer_generator.rb, который содержит код (я кладу пример):

class InitializerGenerator < Rails::Generators::Base 
    def create_initializer_file 
    create_file "config/initializers/initializer.rb", "# Add initialization content here" 
    end 
end 

Добавьте камень в Gemfile, установить его и запустить rails g initializer

Смежные вопросы