ruby - 如何在多个 sinatra 应用程序中包含配置

标签 ruby configuration sinatra

如果我的Sinatra Application结构是这样的。从 Sinatra 帮助复制


require 'sinatra/base'

class LoginScreen  Sinatra::Base
  enable :sessions

  get('/login') { haml :login }

  post('/login') do
    if params[:name] == 'admin' && params[:password] == 'admin'
      session['user_name'] = params[:name]
    else
      redirect '/login'
    end
  end
end

class MyApp  Sinatra::Base
  # middleware will run before filters
  use LoginScreen

  before do
    unless session['user_name']
      halt "Access denied, please login."
    end
  end

  get('/') { "Hello #{session['user_name']}." }
end

问题是这两个应用程序是否需要相同的配置,例如 helpers、registers 和 asset-pack。如何在不复制代码的情况下使两个应用程序保持一致。我可以做这样的事情吗?


require 'sinatra/base'

class LoginScreen  Sinatra::Base
  include_relative("config_file.rb")
  enable :sessions

  get('/login') { haml :login }

  post('/login') do
    if params[:name] == 'admin' && params[:password] == 'admin'
      session['user_name'] = params[:name]
    else
      redirect '/login'
    end
  end
end

class MyApp  Sinatra::Base
  # middleware will run before filters
  include_relative("config_file.rb")
  use LoginScreen

  before do
    unless session['user_name']
      halt "Access denied, please login."
    end
  end

  get('/') { "Hello #{session['user_name']}." }
end

config_file.rb
helpers Sinatra::Helper1
helpers Sinatra::Helper2
helpers Sinatra::Helper3
register Sinatra1
register Sinatra2
register Sinatra3

最佳答案

使用继承怎么样?

class MyBase < Sinatra::Base
  configure do
    helpers Sinatra::Helper1
    register Sinatra1
  end
end

class LoginScreen < MyBase
end

class MyApp < MyBase
  use LoginScreen
end

通过这种方式,所有派生自 MyBase 的应用程序都可以共享配置。

关于ruby - 如何在多个 sinatra 应用程序中包含配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10152448/

相关文章:

ruby-on-rails - 即使安装了 libv8,Gem therubyracer 也不会安装

ruby - 如何为两种环境配置god/redis?

c++ - 每 30 分钟滚动一次日志

python - 如何使用 python 文件中的数据初始化类

ruby - 从 Sinatra 路由访问 EventMachine channel

ruby - 为 Sinatra 生成 JSON

mysql - gem mysql2 gem 未加载

html - 为什么 Rails 不显示我的 API 调用结果?

php - 是什么导致 CPU 负载如此之高(来自 MySQL)?

ruby - Ruby pdf-reader 出现未知字形宽度错误