代码之家  ›  专栏  ›  技术社区  ›  John Polling

创建Rails 3引擎时出现问题

  •  5
  • John Polling  · 技术社区  · 15 年前

    我正在创建我的第一个rails3引擎,目前收到以下错误消息

    is a Railtie/Engine and cannot be installed as plugin (RuntimeError)
    

    为了给你提供更多的背景知识,我并不是把引擎当作宝石来做,而是把引擎文件放在vendor/plugins文件夹中。我知道在plugins文件夹中加载时有一个问题,但是我不清楚如何解决这个问题。

    我的栏杆/初始化.rb引擎中的文件具有以下代码

    require 'rails'
    
    module RailsApp
      module MyEngine
        class Engine < Rails::Engine
    
          config.after_initialize do
            RailsApp::GameType.register do |game_type|
              game_type.name = "TreasureIsland"
              game_type.version = "0.1"
              game_type.thumbnail = "teasure_island.jpg"
            end
          end
        end
      end
    end
    

    建议?

    2 回复  |  直到 15 年前
        1
  •  2
  •   johnmcaliley    15 年前

    捆绑程序本地gem示例:

    #Gemfile
    gem "my_engine", :require => "my_engine", :path => "/my_engines/my_engine"
    

    看看现代红宝石的网站。他有一个关于铁路和发动机的系列作品。在编写本文之后,Rails可能已经有了一些变化,但我认为大部分还是相关的。当我学习如何用Rails3编写引擎时,它帮了我不少忙。

    http://www.themodestrubyist.com/2010/03/01/rails-3-plugins---part-1---the-big-picture/
    http://www.themodestrubyist.com/2010/03/05/rails-3-plugins---part-2---writing-an-engine/
    http://www.themodestrubyist.com/2010/03/16/rails-3-plugins---part-3---rake-tasks-generators-initializers-oh-my/
    http://www.themodestrubyist.com/2010/03/22/rails-3-plugins---part-4---more-on-generators/

        2
  •  2
  •   Keith Schacht    15 年前

    John,我相信在rails初始化过程中,引擎(通常是gems)和插件(存在于供应商中)是在不同的位置加载的。

    引擎实际上有更大的灵活性,他们可以钩到更深的轨道。此外,打包为gem还有很多优点:更容易在应用程序之间共享,更容易在单独的代码回购中维护,更容易进行版本控制。

    我现在正在创建我的第一个rails引擎,并为入门创建了一个有用的起点和演练:

    http://keithschacht.com/creating-a-rails-3-engine-plugin-gem/