Mar*_*lly 5 activerecord ruby-on-rails passenger
我已经阅读了关于这个主题的先前主题,但我在那里找到的解决方案并没有解决我的问题.我有一个不进行数据库访问的rails 3.2.9应用程序 - 它使用HTTP Rest协议到另一个应用程序来访问持久数据.应用程序在使用WEbrick的"rails server"的本地测试环境中运行正常,但无法使用Nginx/Passenger运行,错误" * Exception LoadError in application(请安装sqlite3适配器:( gem install activerecord-sqlite3-adapter
sqlite3不是捆绑包的一部分).将它添加到Gemfile.))".从堆栈跟踪看,似乎ActiveRecord希望在处理请求之前执行的代码中急切地建立数据库连接.我试图按照说明从我的依赖项中删除ActiveRecord,但没有运气.我使用--skip-activerecord生成,它按预期生成了一个像这样的application.rb:
require File.expand_path('../boot', __FILE__)
# Pick the frameworks you want:
# require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"
Run Code Online (Sandbox Code Playgroud)
除了在bundler,注释和自述文件中创建的gemlock文件之外,我的应用程序中没有对activerecord或active_record的引用.Bundler将ActiveRecord报告为依赖项,并且"bundle viz"将rails本身报告为需要ActiveRecord的gem.任何建议或建议都是最受欢迎的.
在回答eric的问题时,这是我的Gemfile
source 'https://rubygems.org'
gem 'rails', '3.2.9'
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
Run Code Online (Sandbox Code Playgroud)
正如您所发现的,Rails 本身已在 Gemspec 中将 ActiveRecord 列为依赖项。到目前为止,您存档的设置是从 Rails 中删除 ActiveRecord 的标准方法。如果您确实想更进一步并删除 gem,您很可能必须分叉 Rails gem 并删除其 Gemspec 中的依赖项。
可能就是这么简单,但您可能还会发现 Rails 中有额外的粘合代码来绑定 ActiveRecord,您也必须将其删除。总而言之,我想知道是否值得。
如果您不需要 ActiveRecord,那么您已经阻止了它的有效加载。某些部分可能仍会加载,但大部分不会加载。内存占用/性能方面的优势与删除核心 Rails 功能所花费的时间相比,我想知道您是否没有选择适合您需求的错误框架?
如果您的要求非常严格,以至于 Rails 仍然太繁重,您可能应该看看 Sinatra 或类似的产品。您还可以坚持使用 Rails 并执行自定义 Rack 中间件堆栈,以仅保留您需要的调用堆栈部分。
我希望这能为您提供一些指导,即使不是一个可行的解决方案,也可以提供一些替代方案来满足更高的问题,因为它本身没有理由删除 ActiveRecord gem。
归档时间: |
|
查看次数: |
719 次 |
最近记录: |