Ruby on rails 我的rails插件没有将我的文件放在/app和/lib方向

Ruby on rails 我的rails插件没有将我的文件放在/app和/lib方向,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我已经创建了一个可以看到的rails引擎。该插件使用其lib目录中的文件,并具有控制器、视图、布局和路由设置 当我跑的时候 rails s 局部打开/测试/模拟,工作正常。但是,当我创建一个新应用程序并需要它时,我会得到: 没有这样的文件或目录@dir\u initialize- ../../lib/assets/style\u-guide/markup/base 插件没有将my/app和/lib目录中的文件传输到新的Rails应用程序。如何获得插件并在rails应用程序中安装文件 下面是这个

我已经创建了一个可以看到的rails引擎。该插件使用其lib目录中的文件,并具有控制器、视图、布局和路由设置

当我跑的时候

rails s
局部打开/测试/模拟,工作正常。但是,当我创建一个新应用程序并需要它时,我会得到:

没有这样的文件或目录@dir\u initialize- ../../lib/assets/style\u-guide/markup/base

插件没有将my/app和/lib目录中的文件传输到新的Rails应用程序。如何获得插件并在rails应用程序中安装文件

下面是这个插件的一些关键文件。我在想,无论什么东西会移动我的控制器,也会移动应用程序和lib目录的其余部分。如果您需要查看更多代码,可以查看h

GEMPEC:

$:.push File.expand_path("../lib", __FILE__)

# Maintain your gem's version:
require "style_guide/version"

# Describe your gem and declare its dependencies:
Gem::Specification.new do |s|
  s.name        = "style_guide"
  s.version     = StyleGuide::VERSION
  s.authors     = ["Joshua Schultz"]
  s.email       = ["me@joshuaschultz.com"]
  s.homepage    = "http://quiet-citadel-4316.herokuapp.com/style_guides/index"
  s.summary     = "Rails-based Style Guide Plugin"
  s.description = "Style_Guide is a plugin used to append an automated boilerplate resource to your rails app allowing you to see/show your style guide. This work is largely based off of the idea initiated at https://github.com/bjankord/Style-Guide-Boilerplate"
  s.license     = "MIT"

  s.files         = `git ls-files -z`.split("\x0")
  s.executables   = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
  s.require_path = 'lib'

  s.test_files = Dir["test/**/*"]

  s.add_dependency "rails", "~> 4.1.4"
  s.add_dependency "sqlite3"

end
/lib/style_guide.rb

require "style_guide/engine"

module StyleGuide



end
/lib/style_-guide/engine.rb

module StyleGuide
  class Engine < ::Rails::Engine
    initializer 'Style Guide precompile hook', group: :all do |app|
      app.config.assets.precompile += %w( style_guides.css )
      app.config.assets.precompile += %w( style.css )
      app.config.assets.precompile += %w( style_guides.js )
      app.config.assets.precompile += %w( style_guides_plugins.js )
    end

  end
end
/app/controllers/style_guide_controller.rb

class StyleGuideController < ApplicationController
  layout 'style_guide.html.erb'
  include StyleGuideHelper

  def index
    @basefiles = []   
    @patternfiles = []
    Dir.foreach("../../lib/assets/style_guide/markup/base") do |file|
      @basefiles << file if File.extname("#{file}") == ".html"
    end
    Dir.foreach("../../lib/assets/style_guide/markup/patterns") do |file|
      @patternfiles << file if File.extname("#{file}") == ".html"
    end
  end
end
问题在于:

Dir.foreach("../../lib/assets/style_guide/markup/base")
在主机应用程序中,路径.././lib/assets/style_-guide/markup/base将不正确。您需要使用引擎的根路径:

Dir.foreach(StyleGuide::Engine.instance.root.join("lib/assets/style_guide/markup/base"))
这将返回安装StyleGuide gem的文件系统路径:

StyleGuide::Engine.instance.root
返回一个Pathname对象,您可以调用该对象并传递一个字符串以将2与platforms目录分隔符/in nix连接在一起


另外,为什么它需要S.add\u依赖关系sqlite3?

它不需要。如果你看看github,我把它删除了。但当我试图从dummy本地运行它时,它似乎需要这样做。我没有足够的技能来理解虚拟机中需要什么。默认情况下,rails应用程序包括sqlite3,所以我认为虚拟机需要它。这一行应该是s.add\u development\u dependency sqlite3。