这是一个非常简单的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
答案 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
查看所有可用的佣金任务。