Redmine不会从Ruby Server开始 - 未定义的方法`find_by_name'

时间:2015-01-06 03:50:17

标签: ruby-on-rails ruby redmine

我试图让Redmine 2.4.7在Ruby 1.9.3-p551上运行。我已按照此处的说明操作:http://www.redmine.org/projects/redmine/wiki/redmineinstall使用

bundle install --without development test rmagick

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

C:\Redmine\redmine-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:\Redmine\redmine-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

2 个答案:

答案 0 :(得分:1)

使用rails4删除了

find_by_*,但根据gem列表,我可以看到你正在使用rails < 4,但我仍然认为它与rails版本有关。

但是,如果查看主分支,则更新语法

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

因此,我认为升级redmine应解决问题

答案 1 :(得分:0)

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

你能告诉我们第243行附近的方法或至少最小的逻辑块吗?