Ruby on rails 为什么我会得到一个;未初始化的常量细化页面“;添加精炼厂CMS后尝试播种时

Ruby on rails 为什么我会得到一个;未初始化的常量细化页面“;添加精炼厂CMS后尝试播种时,ruby-on-rails,ruby-on-rails-3,refinerycms,Ruby On Rails,Ruby On Rails 3,Refinerycms,我已经将RefineryCMS 2.0.3添加到现有的(启动前,所以我可以抽db)应用程序中。我在升级到设计2.0和rails 3.2时遇到了很多问题,但我已经克服了这些问题,应用程序将从哪里开始。但不幸的是,我在炼油厂遇到了障碍 如果我设定种子或尝试创建页面,我会遇到下面列出的错误。我已经仔细检查过了,所有的迁移似乎都被包括(附加)了,所有的迁移都已启动。数据库架构(部分附加)似乎处于工作状态 我能想到的唯一一件事是,也许一颗宝石是相互冲突的,但我不确定如何冲突。我已经添加了我的gemfile

我已经将RefineryCMS 2.0.3添加到现有的(启动前,所以我可以抽db)应用程序中。我在升级到设计2.0和rails 3.2时遇到了很多问题,但我已经克服了这些问题,应用程序将从哪里开始。但不幸的是,我在炼油厂遇到了障碍

如果我设定种子或尝试创建页面,我会遇到下面列出的错误。我已经仔细检查过了,所有的迁移似乎都被包括(附加)了,所有的迁移都已启动。数据库架构(部分附加)似乎处于工作状态

我能想到的唯一一件事是,也许一颗宝石是相互冲突的,但我不确定如何冲突。我已经添加了我的gemfile,以防更熟悉Rails的人能够发现它

谢谢


尝试运行rake db:seed时出错

rake db:seed --trace
** Invoke db:seed (first_time)
** Execute db:seed
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:abort_if_pending_migrations
rake aborted!
uninitialized constant RefineryPage
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/inflector/methods.rb:229:in `block in constantize'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/inflector/methods.rb:228:in `each'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/inflector/methods.rb:228:in `constantize'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/core_ext/string/inflections.rb:54:in `constantize'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/active_scaffold-3.2.3/lib/active_scaffold/extensions/reverse_associations.rb:34:in `block in autodetect_inverse'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/active_scaffold-3.2.3/lib/active_scaffold/extensions/reverse_associations.rb:26:in `each'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/active_scaffold-3.2.3/lib/active_scaffold/extensions/reverse_associations.rb:26:in `autodetect_inverse'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/active_scaffold-3.2.3/lib/active_scaffold/extensions/reverse_associations.rb:15:in `inverse_of_with_autodetect'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/associations/association.rb:212:in `inverse_reflection_for'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/associations/association.rb:217:in `invertible_for?'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/associations/association.rb:108:in `set_inverse_instance'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/associations/collection_association.rb:351:in `add_to_target'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/associations/collection_association.rb:112:in `build'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/associations/collection_proxy.rb:46:in `build'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/globalize3-0.2.0/lib/globalize/active_record/instance_methods.rb:134:in `translation_for'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/globalize3-0.2.0/lib/globalize/active_record/adapter.rb:77:in `fetch_attribute'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/globalize3-0.2.0/lib/globalize/active_record/adapter.rb:24:in `block in fetch'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/globalize3-0.2.0/lib/globalize/active_record/adapter.rb:23:in `each'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/globalize3-0.2.0/lib/globalize/active_record/adapter.rb:23:in `fetch'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/globalize3-0.2.0/lib/globalize/active_record/instance_methods.rb:67:in `read_attribute'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/globalize3-0.2.0/lib/globalize/active_record/class_methods.rb:114:in `block in translated_attr_accessor'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activemodel-3.2.3/lib/active_model/dirty.rb:154:in `attribute_will_change!'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/globalize3-0.2.0/lib/globalize/active_record/instance_methods.rb:49:in `write_attribute'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/globalize3-0.2.0/lib/globalize/active_record/class_methods.rb:111:in `block in translated_attr_accessor'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/attribute_assignment.rb:85:in `block in assign_attributes'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/attribute_assignment.rb:78:in `each'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/attribute_assignment.rb:78:in `assign_attributes'
(eval):3:in `block in assign_attributes'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/globalize3-0.2.0/lib/globalize/active_record/instance_methods.rb:170:in `with_given_locale'
(eval):3:in `assign_attributes'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/base.rb:498:in `initialize'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/validations.rb:39:in `new'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/validations.rb:39:in `create!'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/refinerycms-pages-2.0.3/db/seeds.rb:2:in `<top (required)>'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/railties-3.2.3/lib/rails/engine.rb:520:in `load_seed'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/railties-3.2.3/lib/rails/railtie/configurable.rb:30:in `method_missing'
/Users/chance/code/rails/nokr/db/seeds.rb:10:in `<top (required)>'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/railties-3.2.3/lib/rails/engine.rb:520:in `load_seed'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/railties/databases.rake:309:in `block (2 levels) in <top (required)>'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain'
/Users/chance/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/bin/rake:19:in `load'
/Users/chance/code/rails/nokr/activesupport/ruby/1.9.1/bin/rake:19:in `<main>'
Tasks: TOP => db:seed

gemfile

require 'rbconfig'
HOST_OS = Config::CONFIG['host_os']
source 'http://rubygems.org'
group :assets do
  gem 'sass-rails'
  gem 'coffee-rails'
  gem 'uglifier'
  gem 'compass'
end
gem 'rack'
gem 'rails', "~> 3.2"
group :development, :test do
  gem 'sqlite3'
end
gem "geocoder"
gem "geonames"
gem "devise", "~> 2.0"
gem "geocoder"
gem "geonames"
gem "paperclip", "~> 2.4"
gem 'transloadit-rails'
gem 'uuidtools' 
gem "friendly_id", "~> 4.0.0.beta14"
gem "squeel"
gem "pg"
gem "cancan"
gem 'kaminari'
#gem 'cantango'
gem "formtastic"
gem 'will_paginate'
gem "nested_form", :git => "git://github.com/ryanb/nested_form.git"
gem 'tire', :git => 'https://github.com/karmi/tire'
gem 'multi_json'
gem 'active_scaffold'
gem "meta_search"
gem 'newrelic_rpm'
gem 'paper_trail'
gem 'jquery-rails'
gem 'activeadmin', :git => "git://github.com/gregbell/active_admin.git"
gem 'refinerycms', '~> 2.0.0'
gem 'refinerycms-i18n',   '~> 2.0.0'
#  gem 'refinerycms-blog', '~> 2.0.0'
#  gem 'refinerycms-inquiries', '~> 2.0.0'
#  gem 'refinerycms-search', '~> 2.0.0'
#  gem 'refinerycms-page-images', '~> 2.0.0'
if HOST_OS =~ /linux/i
  gem 'therubyracer', '>= 0.8.2'
end
gem "haml", ">= 3.1.2"

group :development do
  gem "haml-rails", ">= 0.3.4"
  gem "rspec-rails", ">= 2.6.1"
  gem "guard", ">= 0.6.2"
  gem "rails-footnotes", ">= 3.7"
  gem 'rb-fsevent'
  gem 'growl'
  gem "guard-bundler", ">= 0.1.3"
  gem "guard-rails", ">= 0.0.3"
  gem "guard-livereload", ">= 0.3.0"
  gem "guard-rspec", ">= 0.4.3"
  gem "guard-cucumber", ">= 0.6.1"
end

group :test do
  gem "factory_girl_rails", ">= 1.2.0"
  gem "cucumber-rails", ">= 1.1.1"
  gem "capybara", ">= 1.1.1"
  gem "database_cleaner", ">= 0.6.7"
  gem "launchy", ">= 2.0.5"
  gem "rspec-rails", ">= 2.6.1"
  gem "guard", ">= 0.6.2"
  gem 'rb-fsevent'
  gem 'growl'
  gem "guard-bundler", ">= 0.1.3"
  gem "guard-rspec", ">= 0.4.3"
  gem "guard-cucumber", ">= 0.6.1"
end

部分模式

 create_table "refinery_images", :force => true do |t|
    t.string   "image_mime_type"
    t.string   "image_name"
    t.integer  "image_size"
    t.integer  "image_width"
    t.integer  "image_height"
    t.string   "image_uid"
    t.string   "image_ext"
    t.datetime "created_at",      :null => false
    t.datetime "updated_at",      :null => false
  end

  create_table "refinery_page_part_translations", :force => true do |t|
    t.integer  "refinery_page_part_id"
    t.string   "locale"
    t.text     "body"
    t.datetime "created_at",            :null => false
    t.datetime "updated_at",            :null => false
  end

  add_index "refinery_page_part_translations", ["locale"], :name => "index_refinery_page_part_translations_on_locale"
  add_index "refinery_page_part_translations", ["refinery_page_part_id"], :name => "index_f9716c4215584edbca2557e32706a5ae084a15ef"

  create_table "refinery_page_parts", :force => true do |t|
    t.integer  "refinery_page_id"
    t.string   "title"
    t.text     "body"
    t.integer  "position"
    t.datetime "created_at",       :null => false
    t.datetime "updated_at",       :null => false
  end

  add_index "refinery_page_parts", ["id"], :name => "index_refinery_page_parts_on_id"
  add_index "refinery_page_parts", ["refinery_page_id"], :name => "index_refinery_page_parts_on_refinery_page_id"

  create_table "refinery_page_translations", :force => true do |t|
    t.integer  "refinery_page_id"
    t.string   "locale"
    t.string   "title"
    t.string   "custom_slug"
    t.string   "menu_title"
    t.string   "slug"
    t.datetime "created_at",       :null => false
    t.datetime "updated_at",       :null => false
  end

  add_index "refinery_page_translations", ["locale"], :name => "index_refinery_page_translations_on_locale"
  add_index "refinery_page_translations", ["refinery_page_id"], :name => "index_d079468f88bff1c6ea81573a0d019ba8bf5c2902"

  create_table "refinery_pages", :force => true do |t|
    t.integer  "parent_id"
    t.string   "path"
    t.string   "slug"
    t.boolean  "show_in_menu",        :default => true
    t.string   "link_url"
    t.string   "menu_match"
    t.boolean  "deletable",           :default => true
    t.boolean  "draft",               :default => false
    t.boolean  "skip_to_first_child", :default => false
    t.integer  "lft"
    t.integer  "rgt"
    t.integer  "depth"
    t.string   "view_template"
    t.string   "layout_template"
    t.datetime "created_at",                             :null => false
    t.datetime "updated_at",                             :null => false
  end

  add_index "refinery_pages", ["depth"], :name => "index_refinery_pages_on_depth"
  add_index "refinery_pages", ["id"], :name => "index_refinery_pages_on_id"
  add_index "refinery_pages", ["lft"], :name => "index_refinery_pages_on_lft"
  add_index "refinery_pages", ["parent_id"], :name => "index_refinery_pages_on_parent_id"
  add_index "refinery_pages", ["rgt"], :name => "index_refinery_pages_on_rgt"

  create_table "refinery_resources", :force => true do |t|
    t.string   "file_mime_type"
    t.string   "file_name"
    t.integer  "file_size"
    t.string   "file_uid"
    t.string   "file_ext"
    t.datetime "created_at",     :null => false
    t.datetime "updated_at",     :null => false
  end

  create_table "refinery_roles", :force => true do |t|
    t.string "title"
  end

  create_table "refinery_roles_users", :id => false, :force => true do |t|
    t.integer "user_id"
    t.integer "role_id"
  end

  add_index "refinery_roles_users", ["role_id", "user_id"], :name => "index_refinery_roles_users_on_role_id_and_user_id"
  add_index "refinery_roles_users", ["user_id", "role_id"], :name => "index_refinery_roles_users_on_user_id_and_role_id"

  create_table "refinery_user_plugins", :force => true do |t|
    t.integer "user_id"
    t.string  "name"
    t.integer "position"
  end

  add_index "refinery_user_plugins", ["name"], :name => "index_refinery_user_plugins_on_name"
  add_index "refinery_user_plugins", ["user_id", "name"], :name => "index_refinery_user_plugins_on_user_id_and_name", :unique => true

  create_table "refinery_users", :force => true do |t|
    t.string   "username",               :null => false
    t.string   "email",                  :null => false
    t.string   "encrypted_password",     :null => false
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string   "current_sign_in_ip"
    t.string   "last_sign_in_ip"
    t.integer  "sign_in_count"
    t.datetime "remember_created_at"
    t.string   "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "created_at",             :null => false
    t.datetime "updated_at",             :null => false
  end

  add_index "refinery_users", ["id"], :name => "index_refinery_users_on_id"

  create_table "seo_meta", :force => true do |t|
    t.integer  "seo_meta_id"
    t.string   "seo_meta_type"
    t.string   "browser_title"
    t.string   "meta_keywords"
    t.text     "meta_description"
    t.datetime "created_at",       :null => false
    t.datetime "updated_at",       :null => false
  end

  add_index "seo_meta", ["id"], :name => "index_seo_meta_on_id"
  add_index "seo_meta", ["seo_meta_id", "seo_meta_type"], :name => "index_seo_meta_on_seo_meta_id_and_seo_meta_type"

  create_table "user_addresses", :force => true do |t|
    t.integer  "address_id"
    t.integer  "user_id"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end


如果您愿意的话,我早些时候在Refinery CMS Google Group上问过这个问题。

有趣的是,如果您从GEM文件中删除“active_scaffold”(至少,我能够以这种方式在本地实例化一个Refinery::页面,否则我会得到与您相同的错误),这个问题就会消失。但是,我敢打赌这个问题会再次出现。据我所知,问题源于GlobalizeGem,炼油厂页面使用它进行翻译。页面模型调用此类宏:

translates :title, :menu_title, :custom_slug, :slug, :include => :seo_meta
这导致globalize gem自动设置多个模型关联。问题是,这些关联不适用于名称空间模型(Refinery::Page是名称空间模型)。特别是,Globalize::ActiveRecord::ActMacro中的此方法用于设置“refinery/pages”和“refinery/pages/translations”之间关联的类名,并使用基本rails约定从db表名推断模型名:

  def class_name
    @class_name ||= begin
      class_name = table_name[table_name_prefix.length..-(table_name_suffix.length + 1)].downcase.camelize
      pluralize_table_names ? class_name.singularize : class_name
    end
  end
我在rails源代码中进行了一些挖掘,以了解rails如何使用基于表名的命名空间模型。我还没看到什么。globalize gem可能需要支持在translates宏上传入的附加选项,以允许使用名称空间模型,然后炼油厂gem需要传入该选项。还在研究


有趣的错误。

斯奎尔是罪魁祸首,正如我在回答您在CMS上提交的问题时指出的:

希望我能充分回答您的问题:-)

菲尔


你能在GitHub中创建一个回购协议来解决这个问题吗?嘿,伙计,非常感谢你花时间回答我的问题。我想知道如何开始第二次悬赏,因为我的问题/答案有点不对劲。在我将refinery/existing codebase移动到一个新的应用程序并更新了refinery之后,错误发生了一些变化。嘿,没问题,我看到Philip在github问题上为你做了很多。绝对值得赏金。谢谢你修复链接,里奇!
  def class_name
    @class_name ||= begin
      class_name = table_name[table_name_prefix.length..-(table_name_suffix.length + 1)].downcase.camelize
      pluralize_table_names ? class_name.singularize : class_name
    end
  end