Ruby on rails 我的rails插件没有将我的文件放在/app和/lib方向
我已经创建了一个可以看到的rails引擎。该插件使用其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 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。