我使用Heroku部署Rails应用程序。我将敏感数据(例如API密钥和密码)存储在Heroku的环境变量中,然后在利用各种API的rake任务中使用这些数据。
我只是想知道Heroku的环境变量有多安全?有什么方法可以散列这些变量,同时保留以某种方式在后台使用它们的功能?
我在这里遇到了上一个线程:将密码作为环境变量(而不是纯文本)存储在配置文件中是否安全?。
但是当我仍然需要散列密码来执行重要的后台任务时,它并不能完全涵盖实例。
我正在使用Python从Google Analytics Core Reporting API中提取一些数据.我已经设法使用函数来对API进行不同的调用(下面只是两个例子)但是我想知道如何重构它以使其更短?还有很多重复的代码.
def get_pvs(service, profile_id, start_date, end_date, type, data):
if type == "url":
return service.data().ga().get(
ids = 'ga:' + profile_id,
start_date = start_date,
end_date = end_date,
metrics = 'ga:pageviews',
dimensions = 'ga:pagePath',
filters = 'ga:pageviews!=0',
sort = '-ga:pageviews',
max_results = '10000').execute()
elif type == "author":
return service.data().ga().get(
ids = 'ga:' + profile_id,
start_date = start_date,
end_date = end_date,
metrics = 'ga:pageviews',
# Post Author
dimensions = 'ga:dimension2',
sort = '-ga:pageviews',
max_results = '100').execute()
Run Code Online (Sandbox Code Playgroud) 如果用户不是管理员,我将RailsAdmin设置为重定向到主页.但是,重定向失败.这是我收到的错误消息:
ActionController::UrlGenerationError in RailsAdmin::MainController#dashboard
No route matches {:controller=>"home", :action=>"index"} missing required keys: []
Run Code Online (Sandbox Code Playgroud)
rails_admin.rb中的代码如下所示.在配置文件的顶部:
ADMIN_EMAILS= ['my@email.com']
Run Code Online (Sandbox Code Playgroud)
以下是限制访问管理员的其余代码:
config.authorize_with do
is_admin = ADMIN_EMAILS.include?(current_user.email)
if current_user
redirect_to root_path unless is_admin
end
end
Run Code Online (Sandbox Code Playgroud)
这是完整的堆栈跟踪:
actionpack (4.0.0) lib/action_dispatch/journey/formatter.rb:35:in `generate'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:576:in `generate'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:606:in `generate'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:642:in `url_for'
actionpack (4.0.0) lib/action_dispatch/routing/url_for.rb:155:in `url_for'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:209:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:178:in `call'
actionpack (4.0.0) lib/action_dispatch/routing/route_set.rb:249:in `block (2 levels) in define_url_helper'
config/initializers/rails_admin.rb:17:in `block (2 levels) in <top (required)>'
rails_admin (0.6.1) app/controllers/rails_admin/application_controller.rb:47:in `instance_eval'
rails_admin (0.6.1) …Run Code Online (Sandbox Code Playgroud)