Sinatra,ActiveRecord和ActiveSupport - 无法启动应用程序

时间:2014-04-24 05:09:20

标签: ruby activerecord sinatra dreamhost activesupport

这是一个非常简单的Sinatra应用程序,我试图将其放在生产服务器上。在本地,一切都在游泳,但在DreamHost服务器上,我遇到了一个问题。我在启动应用时看到的错误是:

/valid_path/.gems/gems/activesupport-4.1.0/lib/active_support/inflector/methods.rb:135: undefined (?...) sequence: /\b(?<!['\342\200\231`])[a-z]/

我已经查看了activesupport gem以查找任何相关的开放问题,重新检查我的本地设置与服务器类似(我在本地运行rvm,如果有帮助则不在服务器上使用rvm)仍然没有。< / p>

Passenger已经设置好,而且我很确定正确的宝石会受到影响,因为当我删除activesupport gem时,我得到了一个gem缺失错误。

我现在不知所措......

首先是相关的代码:

的Gemfile

source "https://rubygems.org"

gem "sinatra"
gem "thin"
gem "json"
gem "mysql2"
gem 'httparty'
gem 'activerecord'

app.rb

1: # encoding: utf-8
2: 
3: require 'sinatra'
4: require 'active_record'
5: require 'yaml'
...

config.ru

require ::File.join( ::File.dirname(__FILE__), 'app' )

run AppClass.new

我的'宝石清单'

activemodel (4.1.0)
activerecord (4.1.0)
activesupport (4.1.0)
arel (5.0.1.20140414130214)
bigdecimal (1.2.0)
builder (3.2.2)
bundler (1.6.2)
daemons (1.1.9)
eventmachine (1.0.3)
httparty (0.13.1)
i18n (0.6.9)
io-console (0.4.2)
json (1.8.1, 1.7.7)
minitest (5.3.3, 4.3.2)
multi_xml (0.5.5)
mysql2 (0.3.15)
psych (2.0.0)
rack (1.5.2)
rack-protection (1.5.3)
rake (0.9.6)
rdoc (4.0.0)
sinatra (1.4.5)
test-unit (2.0.0.0)
thin (1.6.2)
thread_safe (0.3.3)
tilt (1.4.1)
tzinfo (1.1.0)

最后,通过Passenger“Ruby(Rack)应用程序的错误无法启动”:

错误讯息:

/valid_path/.gems/gems/activesupport-4.1.0/lib/active_support/inflector/methods.rb:135: undefined (?...) sequence: /\b(?<!['\342\200\231`])[a-z]/

异常类:

SyntaxError

回溯:

#   File    Line    Location
0   /valid_path/.gems/gems/activesupport-4.1.0/lib/active_support/dependencies/autoload.rb  1   in `require'
1   /valid_path/.gems/gems/activesupport-4.1.0/lib/active_support/dependencies/autoload.rb  1   
2   /valid_path/.gems/gems/activesupport-4.1.0/lib/active_support.rb    25  in `require'
3   /valid_path/.gems/gems/activesupport-4.1.0/lib/active_support.rb    25  
4   /valid_path/.gems/gems/activerecord-4.1.0/lib/active_record.rb  24  in `require'
5   /valid_path/.gems/gems/activerecord-4.1.0/lib/active_record.rb  24  
6   ./app.rb    4   in `require'
7   ./app.rb    4   
8   config.ru   2   in `require'
9   config.ru   2   
10  /valid_path/.gems/gems/rack-1.5.2/lib/rack/builder.rb   55  in `instance_eval'
11  /valid_path/.gems/gems/rack-1.5.2/lib/rack/builder.rb   55  in `initialize'
12  config.ru   1   in `new'
13  config.ru   1   

1 个答案:

答案 0 :(得分:0)

我通常使用 sinatra-activerecord gem将所有必要的activerecord rake任务添加到我的Sinatra应用程序中。如果它位于 config 目录中,它也会自动检测 database.yml ,就像在rails应用程序中一样。尝试使用最新版本,因为它现在肯定适用于Activerecord 4.1:

只需在你的Gemfile中更改它:

gem 'activerecord'

以及 bundle

gem 'activerecord', '~> 4.1.0'
gem 'sinatra-activerecord', '~> 2.0.1'

然后通过更改:

在您的应用中需要它
require "activerecord"

到此:

require "sinatra/activerecord"

并将其添加到您的rake文件以获取常见的Activerecord任务:

require "sinatra/activerecord/rake"

您现在应该可以 bundle exec rake -T 查看所有可用的佣金任务。