ruby-on-rails – Rails应用程序和goliath api和数据库/模型共享
发布时间:2020-12-16 22:01:31 所属栏目:百科 来源:网络整理
导读:我试图用Goliath框架创建异步api.服务应写入 mysql,向RabbitMQ添加消息并接收回复.还应该使用Rails构建的单独的管理应用程序.我有几个问题: 有没有办法有效地分享Rails和Goliath之间的模式? 使用Activerecord或其他orm与em有任何问题吗?有没有最佳做法,配
我试图用Goliath框架创建异步api.服务应写入
mysql,向RabbitMQ添加消息并接收回复.还应该使用Rails构建的单独的管理应用程序.我有几个问题:
有没有办法有效地分享Rails和Goliath之间的模式? 解决方法
这是一个在Goliath中使用ActiveRecord模型的快速入侵.使用这种方法,您可以使用模型而不使用require,但是您没有模型级别的关系.要获得has_many和belongs_to关系(在这种方法中),我将加载模型文件,并在下面的类定义循环中包含包含这些单词的行.
require 'goliath' require 'active_record' require 'active_support' # The location of the Rails app to integrate RAILS_APP ||= ENV['HOME']+"/dev/qtrack" # Load the ActiveRecord database configuration,development settings configpath = File.join(RAILS_APP,"config","database.yml") config = YAML::load_file(configpath) ActiveRecord::Base.establish_connection config["development"] # Set the names of all Rails models to a constant MODELS ||= [] models_dir = File.join(RAILS_APP,"app","models") model_names = Dir[models_dir+"/*.rb"] # Loop over each file name,define a class for each model_names.each do |fname| mname = File.basename(fname,'.rb').titleize.sub(/ /,'') eval %Q{ class ::#{mname} < ActiveRecord::Base end } m = mname.constantize MODELS << m unless MODELS.include?(m) end class Hello < Goliath::API # default to JSON output,allow Yaml as secondary use Goliath::Rack::Render,['json','yaml'] def response(env) # Create a Hash with each model name and the object count models = MODELS.inject({}) {|hsh,model| hsh[model] = model.count; hsh } [200,{},models.to_json ] end end 这是一个基于您的反馈的黑客. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |