在轨道上用红宝石创建引擎

时间:2016-04-26 10:55:04

标签: ruby-on-rails ruby ruby-on-rails-4

我正在创建一个引擎,我遇到了一些问题。

我正在读这个manual

我的项目有以下信息:

  • 我的主要应用程序的路径:/var/www/crs
  • 我的引擎路径,myapp:/var/www/crs/myapp

这些是我尝试的步骤:

  1. 我运行了此代码:rails plugin new myapp --mountable

  2. 我在/var/www/crs/myapp/test/dummy/

  3. 中创建了资源
  4. 我添加了/var/www/crs/config/routes.rb这一行 mount Myapp::Engine => "/myapp"

  5. 我在控制台(/ var / www / crs / myapp / test / dummy /)中运行了此代码:rails s

  6. 到目前为止一切顺利。但是,当我在主应用程序(/ var / www / crs / Gemfile)中添加到gem文件时,这一行:

    gem 'myapp', path: "myapp"
    

    并执行命令

    bundle
    

    我得到了以下错误:

    The gemspec at /var/www/crs/myapp/myapp.gemspec is not valid. The validation error was '"FIXME" or "TODO" is not a description'
    Could not find gem 'myapp' in source at `myapp`.
    Source does not contain any versions of 'myapp'
    

    我不明白这个错误来自哪里,也不知道拥有它的文件在哪里。如何找到问题文件以及如何解决此问题?

1 个答案:

答案 0 :(得分:0)

myapp.gemspec位于引擎的根文件夹中。

在这个文件中你写了一个简短的描述(你的引擎做了什么)和一些dependecies,例如创建gem(或引擎)时,myapp.gemspec将填充默认值

配置如下所示

Gem::Specification.new do |spec|
  spec.name          = "myengine"
  spec.version       = Myengine::VERSION
  spec.authors       = ["my username"]
  spec.email         = ["my email"]
  spec.summary       = %q{ wow great engine }
  spec.description   = %q{ trust me, its a great engine which is great}
  spec.homepage      = ""
  spec.license       = "MIT"

  spec.files         = `git ls-files -z`.split("\x0")
  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.7"
  spec.add_development_dependency "rake", "~> 10.0"
end

在那里你找到了TODO和FIXME消息的描述

btw Brandon Hilkert提供了一个关于引擎的非常好的教程(http://brandonhilkert.com/blog/how-to-build-a-rails-engine/