首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails:做你自己的宝石

Rails:做你自己的宝石
EN

Stack Overflow用户
提问于 2014-01-06 13:12:34
回答 1查看 137关注 0票数 1

在一些教程的帮助下,我制作了第一个简单的gem,它将Sass/CSS文件添加到应用程序的资产/样式表目录中。

这很尴尬,但问题是我不知道如何在应用程序中运行我的gem。

宝石规格:

代码语言:javascript
运行
复制
# 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:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
require "bundler/gem_tasks"
require 'yard'
YARD::Rake::YardocTask.new

我相信我应该写一些rake任务,但我不太确定我怎么做。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-09 22:50:21

我学会了如何解决我的问题。从gem文件运行ruby代码的最佳方法是将其移动到rails生成器。例如,创建包含代码的文件lib/generators/initializer_generator.rb (我举了一个例子):

代码语言:javascript
运行
复制
class InitializerGenerator < Rails::Generators::Base
  def create_initializer_file
    create_file "config/initializers/initializer.rb", "# Add initialization content here"
  end
end

然后将gem添加到Gemfile中,安装并运行rails g initializer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20950802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档