config.ru 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. require 'erb'
  2. require 'active_record'
  3. require 'yaml'
  4. Bundler.require :default
  5. db_config = YAML.load(ERB.new(File.read('config/database.yml')).result)[ENV['RACK_ENV']]
  6. ActiveRecord::Base.establish_connection(db_config)
  7. class World < ActiveRecord::Base
  8. self.table_name = 'World'
  9. end
  10. module Acme
  11. class HelloWorld < Grape::API
  12. get '/json' do
  13. {message:'Hello, World!'}
  14. end
  15. end
  16. class PlainText < Grape::API
  17. content_type :plain, 'text/plain'
  18. format :plain
  19. get '/plaintext' do
  20. 'Hello, World!'
  21. end
  22. end
  23. class DatabaseQueries < Grape::API
  24. get '/db' do
  25. ActiveRecord::Base.connection_pool.with_connection do
  26. World.find(Random.rand(10000) + 1)
  27. end
  28. end
  29. get '/query' do
  30. queries = params[:queries].to_i
  31. queries = 1 if queries < 1
  32. queries = 500 if queries > 500
  33. ActiveRecord::Base.connection_pool.with_connection do
  34. (1..queries).map do
  35. World.find(Random.rand(10000) + 1)
  36. end
  37. end
  38. end
  39. get '/updates' do
  40. queries = params[:queries].to_i
  41. queries = 1 if queries < 1
  42. queries = 500 if queries > 500
  43. ActiveRecord::Base.connection_pool.with_connection do
  44. worlds = (1..queries).map do
  45. world = World.find(Random.rand(10000) + 1)
  46. world.randomNumber = Random.rand(10000) + 1
  47. World.update(world.id, :randomNumber => world.randomNumber)
  48. world
  49. end
  50. worlds
  51. end
  52. end
  53. end
  54. class API < Grape::API
  55. before do
  56. header 'Date', Time.now.httpdate
  57. header 'Server', 'WebServer'
  58. end
  59. content_type :json, 'application/json'
  60. format :json
  61. mount ::Acme::HelloWorld
  62. mount ::Acme::PlainText
  63. mount ::Acme::DatabaseQueries
  64. end
  65. end
  66. run Acme::API