我正在通过创建分类引擎来尝试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'中.
关于可安装在导轨上的发动机的问题。首先这些是我正在使用的版本;
$ 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
我之前问过这个但没有得到任何有用的答案,所以我再试一次......
我需要创建一个 gem 或引擎,将所需的列/属性添加到主应用程序中的现有模型。类似于设计 gem 可以创建模型的方式,或者将设计所需的属性附加到现有模型。
我的想法是 gem 需要一个类似于rails generate devise:install将创建所需迁移的安装脚本。
任何链接、教程或建议将不胜感激。
我想给我的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
我想知道可安装的 Rails 引擎是否可以检索其安装的父应用程序的名称。
我浏览了官方 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)
如何访问服务类或类似模块中的引擎路径助手?
在引擎耙任务中访问引擎模型正在抛出NameError: uninitialized constant。模型已命名空间并正确定义。可以从已安装应用程序的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 应用程序路径中。这是在哪里发生的?有没有办法可以防止我的包目录中的迁移路径包含在应用程序路径中?
如果有人能够展示在 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
以下如何:使用设计可安装发动机内,我不能得到任何的设计辅助方法来显示.
我正在使用的引擎是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_userPeople::User.current_userhelper 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)
我能够创建用户.
# 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) rails-engines ×10
ruby-on-rails ×10
ruby ×3
devise ×2
gem ×1
jquery-ui ×1
migration ×1
rake ×1
yaml ×1