标签: rails-engines

使用rake为rails引擎将样本数据添加到数据库

我正在通过创建分类引擎来尝试Rails引擎,用户可以在其中查看/发布/回复分类.

主应用程序包含用于用户身份验证和配置文件的代码,而我创建的引擎将处理分类功能.

现在我想为分类引擎添加一些示例数据到数据库.所以我在'vendor/plugins/classifieds/lib/tasks'中创建了一个名为'sample_classifieds_data.rake'的rake文件,并在'vendor/plugins/classifieds/lib/tasks/sample_classifieds_data'中添加了yml文件

rake文件的代码和示例yml文件可以在这里找到:http://gist.github.com/216776

现在的问题是,当我运行rake任务时,没有抛出任何错误,但是数据库中没有填充值.

有任何想法吗?BTW,它是开发环境,数据库是开发数据库.

我运行了一个类似的rake任务来填充数据库中的样本用户.rake文件'sample_data.rake'的位置位于'lib/tasks'中.

rake yaml ruby-on-rails rails-engines

2
推荐指数
1
解决办法
4528
查看次数

rails 命令在可挂载引擎根目录中不起作用

关于可安装在导轨上的发动机的问题。首先这些是我正在使用的版本;

$ rails -v
  Rails 3.2.1
$ ruby -v
  ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
Run Code Online (Sandbox Code Playgroud)

我用这个创建了可安装的引擎:

$ rails plugin new testEngine --mountable
  create  
  create  README.rdoc
  create  Rakefile
  create  testEngine.gtestEnginepec
  create  MIT-LICENSE
  create  .gitignore
  create  Gemfile
  create  app
  create  app/controllers/testEngine/application_controller.rb
  create  app/helpers/testEngine/application_helper.rb
  create  app/mailers
  create  app/models
  create  app/views/layouts/testEngine/application.html.erb
  create  app/assets/images/testEngine
  create  app/assets/images/testEngine/.gitkeep
  create  config/routes.rb
  create  lib/testEngine.rb
  create  lib/tasks/testEngine_tasks.rake
  create  lib/testEngine/version.rb
  create  lib/testEngine/engine.rb
  create  app/assets/stylesheets/testEngine/application.css
  create  app/assets/javascripts/testEngine/application.js
  create  script
  create  script/rails
  create  test/test_helper.rb
  create  test/testEngine_test.rb
  append  Rakefile
  create  test/integration/navigation_test.rb
  vendor_app  test/dummy

  run …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails rails-engines ruby-on-rails-3 ruby-on-rails-3.1

2
推荐指数
1
解决办法
2391
查看次数

创建 Rails Engine/Gem 来修改现有的模型数据库表

我之前问过这个但没有得到任何有用的答案,所以我再试一次......

我需要创建一个 gem 或引擎,将所需的列/属性添加到主应用程序中的现有模型。类似于设计 gem 可以创建模型的方式,或者将设计所需的属性附加到现有模型。

我的想法是 gem 需要一个类似于rails generate devise:install将创建所需迁移的安装脚本。

任何链接、教程或建议将不胜感激。

migration gem ruby-on-rails rails-engines devise

2
推荐指数
1
解决办法
975
查看次数

如何使用Rails引擎使用ActiveSupport :: Configurable

我想给我的rails引擎宝石一个合适的配置可能性.看起来像这样的东西initializers/my_gem.rb (链接到当前的初始化程序):

MyGem.configure do |config|
  config.awesome_var = true
  # config.param_name = :page
end
Run Code Online (Sandbox Code Playgroud)

所以我一直在寻找其他宝石中的任何线索,而我发现的最好的云就是这个kaminari/config.rb.但它看起来很丑陋,我认为必须有更好的方法.

ruby configuration ruby-on-rails rails-engines ruby-on-rails-4

2
推荐指数
2
解决办法
1451
查看次数

Rails 引擎:获取父应用程序的名称

我想知道可安装的 Rails 引擎是否可以检索其安装的父应用程序的名称。

我浏览了官方 Rails 引擎指南,但找不到任何内容。有什么来源或想法吗?

ruby-on-rails rails-engines

2
推荐指数
1
解决办法
1137
查看次数

在服务类中使用 rails 引擎路径助手

我在我的 rails 应用程序中安装了一个引擎。在控制器中,我可以通过在路径前加上引擎名称来访问引擎路径助手,例如myengine.articles_path. 我想在服务类中访问这些助手。通常我会包括 url_helpers 即

class SomeService
  include Rails.application.routes.url_helpers

end
Run Code Online (Sandbox Code Playgroud)

这允许我访问我的主应用程序中的助手,例如root_path,但是如果我尝试myengine.articles_path我得到

undefined local variable or method `myengine'
Run Code Online (Sandbox Code Playgroud)

如何访问服务类或类似模块中的引擎路径助手?

ruby-on-rails rails-engines

2
推荐指数
1
解决办法
1221
查看次数

无法从引擎在引擎任务中加载/访问模型

在引擎耙任务中访问引擎模型正在抛出NameError: uninitialized constant。模型已命名空间并正确定义。可以从已安装应用程序的Rails控制台访问

但不是来自引擎耙任务

ruby ruby-on-rails rails-engines ruby-on-rails-4.2

2
推荐指数
1
解决办法
69
查看次数

通过引擎引入的 Rails 迁移路径

我有一个 rails 应用程序,它通过在 Gemfile 中显式声明来运行一个 rails 引擎。我设置了一个脚本来通过以下方式安装来自引擎的迁移:rake railties:install:migrations然后迁移。当我运行脚本时,会安装迁移,但在运行迁移时出现 DuplicateMigration 错误。我进一步调查了这一点,看到

Rails.application.paths['db/migrate'].to_a
导致:

["/src/db/migrate","/bundle/bundler/gems/my_engine-w8ejw9jf/db/migrate"]

不知何故,来自 bundle 目录的迁移路径被添加到 Rails 应用程序路径中。这是在哪里发生的?有没有办法可以防止我的包目录中的迁移路径包含在应用程序路径中?

ruby-on-rails rails-migrations rails-engines

2
推荐指数
1
解决办法
364
查看次数

如何在 Rails 6 或 Rails 7 alpha 引擎中使用 jqueryUI

如果有人能够展示在 Rails 6 或 Rails 7 Alpha 2 引擎中使用 jquery ui 所需的确切步骤,我将不胜感激。我无法让 importmap-rails 在 Rails 7 引擎中工作,也无法让 webpacker 在 Rails 6 引擎或 Rails 7 alpha 2 引擎中工作。给定一个名为 custom_page 的引擎,使用生成

rails plugin new custom_page --mountable --full
Run Code Online (Sandbox Code Playgroud)

我将 jquery-ui-rails 作为依赖项包含在 gemspec 中。

spec.add_dependency 'jquery-ui-rails'
Run Code Online (Sandbox Code Playgroud)

也许这应该是一个runtime_dependency?完整的依赖项列表是

  spec.add_dependency "rails", "~> 7.0.0.alpha2"

  spec.add_dependency 'new_ckeditor'

  spec.add_dependency 'ancestry'
  spec.add_dependency 'friendly_id', '>= 5.4.0'
  spec.add_dependency 'pg_search'

  spec.add_dependency 'carrierwave', '~> 2.0'
  spec.add_dependency 'carrierwave-imageoptimizer'
  spec.add_dependency 'sassc-rails', '~> 2.0.0'
  spec.add_dependency 'pg', '~> 1.1'
  spec.add_dependency 'jquery-rails'
  spec.add_dependency 'jquery-ui-rails'

  spec.add_development_dependency "puma"

  #Testing Gems
  spec.add_development_dependency …
Run Code Online (Sandbox Code Playgroud)

jquery-ui ruby-on-rails rails-engines ruby-on-rails-6 ruby-on-rails-7

2
推荐指数
1
解决办法
2656
查看次数

设计current_user无法在可安装引擎中工作

以下如何:使用设计可安装发动机内,我不能得到任何的设计辅助方法来显示.

我正在使用的引擎是People.(见我的完整回购)

module People
  class ApplicationController < ActionController::Base
    current_user
  end
end
Run Code Online (Sandbox Code Playgroud)

返回 undefined local variable or method 'current_user' for People::ApplicationController:Class

我尝试了以下内容

  • require 'devise' 在People :: ApplicationController的顶部
  • require 'devise' 在主机的application.rb中
  • 调用 main_app.current_user
  • 调用 People::User.current_user
  • 添加helper People::Engine.helpers(根据此SO建议)

而且,会议也不是

不确定它是否相关,但是当我pry进入ApplicationController并输入时

# Pry Session
  session[:foo]
  => NameError: undefined local variable or method `session' for People::ApplicationController:Class
Run Code Online (Sandbox Code Playgroud)

安装了附加的Context,Devise

我能够创建用户.

# Pry Session
  People::User
  => People::User(id: integer, email: string, encrypted_password: string, reset_password_token: string, reset_password_sent_at: datetime, …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rails-engines devise

1
推荐指数
1
解决办法
1159
查看次数