Redmine 无法在 Ruby Server 上启动 - 未定义的方法"find_by_name"



我正在尝试让 Redmine 2.4.7 在 Ruby 1.9.3-p551 上运行。我按照这里的说明进行操作:http://www.redmine.org/projects/redmine/wiki/redmineinstall 使用

bundle install --without development test rmagick

我的服务器使用以下命令正确启动:

C:Redmineredmine-2.4.7>ruby script/rails server webrick -e production
 => Booting WEBrick
 => Rails 3.2.19 application starting in production on http://0.0.0.0:3000
 => Call with -d to detach
 => Ctrl-C to shutdown server
 [2015-01-06 03:44:56] INFO  WEBrick 1.3.1
 [2015-01-06 03:44:56] INFO  ruby 1.9.3 (2014-11-13) [i386-mingw32]
 [2015-01-06 03:44:56] INFO  WEBrick::HTTPServer#start: pid=11844 port=3000

但是尝试访问任何页面都会导致此错误:

NoMethodError (undefined method `find_by_name' for Setting():Class):
  app/models/setting.rb:243:in `find_or_default'
  app/models/setting.rb:108:in `[]'
  app/models/setting.rb:141:in `rest_api_enabled?'
  app/controllers/application_controller.rb:119:in `find_current_user'
  app/controllers/application_controller.rb:100:in `user_setup'

我试过了

gem update --system

但仍然是同样的问题。

安装的宝石如下:

C:Redmineredmine-2.4.7>gem list
*** LOCAL GEMS ***
actionmailer (3.2.19)
actionpack (3.2.19)
activemodel (3.2.19)
activerecord (3.2.19)
activerecord-sqlserver-adapter (3.2.12)
activeresource (3.2.19)
activesupport (3.2.19)
arel (3.0.3)
bigdecimal (1.1.0)
builder (3.0.0)
bundler (1.7.11)
coderay (1.1.0)
erubis (2.7.0)
hike (1.2.3)
i18n (0.7.0)
io-console (0.3)
journey (1.0.4)
jquery-rails (2.0.3)
json (1.8.1, 1.5.5)
mail (2.5.4)
mime-types (1.25.1)
minitest (2.5.1)
multi_json (1.10.1)
net-ldap (0.3.1)
polyglot (0.3.5)
rack (1.4.5)
rack-cache (1.2)
rack-openid (1.4.2)
rack-ssl (1.3.4)
rack-test (0.6.2)
rails (3.2.19)
railties (3.2.19)
rake (10.1.1, 0.9.2.2)
rdoc (3.12.2, 3.9.5)
ruby-openid (2.3.0)
rubygems-update (2.4.5)
sprockets (2.2.3)
thor (0.19.1)
tilt (1.4.1)
tiny_tds (0.5.1 x86-mingw32)
treetop (1.4.15)
tzinfo (0.3.42)

引发错误的方法如下所示

private
  # Returns the Setting instance for the setting named name
  # (record found in database or new record with default value)
  def self.find_or_default(name)
    name = name.to_s
    raise "There's no setting named #{name}" unless @@available_settings.has_key?(name)
    setting = find_by_name(name)
    unless setting
      setting = new(:name => name)
      setting.value = @@available_settings[name]['default']
    end
    setting
  end
end

find_by_* 被 rails4 删除,但根据 gem 列表,我可以看到您正在使用 rails < 4 ,但我仍然相信这与 rails 版本有关。

但是,如果您查看 master 分支,则更新了语法

https://github.com/redmine/redmine/blob/master/app/models/setting.rb#L246

所以我相信升级您的redmine应该可以解决问题

你的输出说: app/models/setting.rb:243:in 'find_or_default'

你能给我们展示方法或至少是第 243 行周围的最小逻辑块吗?

相关内容

最新更新