小编Rao*_*oot的帖子

将文件从 URL 传输到 Cloud Storage

我是一名 Ruby 开发人员,尝试使用 Python 编写的 Google Cloud Functions,但在将远程文件从给定 URL 传输到 Google Cloud Storage (GCS) 时遇到了困难。

在等效的 RoR 应用程序中,我下载到应用程序的临时存储,然后上传到 GSC。

我希望有一种方法可以通过云功能简单地将远程文件“下载”到我的 GCS 存储桶中。

这是我对一些注释所做的简化示例,真正的代码从私有 API 获取 URL,但这工作正常并且不是问题所在。

from google.cloud import storage
project_id = 'my-project'
bucket_name = 'my-bucket'
destination_blob_name = 'upload.test'
storage_client = storage.Client.from_service_account_json('my_creds.json')

# This works fine
#source_file_name = 'localfile.txt'

# When using a remote URL I get 'IOError: [Errno 2] No such file or directory'
source_file_name = 'http://www.hospiceofmontezuma.org/wp-content/uploads/2017/10/confused-man.jpg'

def upload_blob(bucket_name, source_file_name, destination_blob_name):
    bucket = storage_client.get_bucket(bucket_name)
    blob = bucket.blob(destination_blob_name)
    blob.upload_from_filename(source_file_name)

upload_blob(bucket_name, …
Run Code Online (Sandbox Code Playgroud)

python google-cloud-storage google-cloud-platform google-cloud-functions

3
推荐指数
1
解决办法
9343
查看次数

Rails 3.2与Omniauth-Facebook - 权限范围问题

我跟随Railscast 360为我的Rails应用程序设置了Omniauth-Facebook身份验证.身份验证运行良好,但我正在疯狂尝试传递范围请求的额外权限.我知道它们可用,因为我可以手动将范围请求输入到URL中.我已经尝试了所有的东西,并用尽所有谷歌搜索.

正如Railscast评论中所建议的那样,我已将我的Omniauth-Facebook gem降级为1.4.0,据我所知,该范围不能作为来自Omniauth初始化程序的散列传递,而是通过javascript传递.这对我来说都不起作用,但不像我根据Railscast运行咖啡脚本的评论,我已尝试各种放置范围,但要么得到错误或不完整的结果....即只是电子邮件,没有user_events等.

我意识到这里没有代码,但它完全符合railscast.

任何同样遵循相同Railscast的人都可以提供有关修复1.4.1问题的建议,以便我可以从初始化程序传递范围哈希或者如何在运行1.4.0时正确传递它.

非常感谢提前!

更新:我有点到了某个地方!但这不太对劲.任何指针都会非常感激.

在我的Omniauth初始化程序中,我有:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, 'app_id', 'secret_id', {:scope => 'user_birthday,user_events,email'}
end
Run Code Online (Sandbox Code Playgroud)

(插入真实的ID!)

然后,我可以通过将单词scope放入FB.Init中的coffeescript来提出正确的请求:

jQuery ->
  $('body').prepend('<div id="fb-root"></div>')

  $.ajax
    url: "#{window.location.protocol}//connect.facebook.net/en_US/all.js"
    dataType: 'script'
    cache: true

window.fbAsyncInit = ->
  FB.init(appId: 'app_id', cookie: true, scope)

  $('#sign_in').click (e) ->
    e.preventDefault()
    FB.login (response) ->
       window.location = "/auth/facebook/callback"  if response.authResponse    

  $('#sign_out').click (e) ->
    FB.getLoginStatus (response) ->
      FB.logout() if response.authResponse
    true
Run Code Online (Sandbox Code Playgroud)

(再次使用上面插入的真实appid)

但是,这会阻止弹出窗口工作,所以我很确定我放置了不正确的范围.我见过的其他例子将它放在FB.login中,但我在那里的尝试要么抛出错误,要么根本不起作用.

救命!:)

authentication facebook-graph-api omniauth ruby-on-rails-3 ruby-on-rails-3.2

2
推荐指数
1
解决办法
1645
查看次数

Rails自定义延迟作业 - 未初始化的常量

我已成功使用delayed_job几年了,但最近我需要实现某种成功/失败回调/挂钩.

在github上的delayed_job指南之后,我设置了以下自定义作业:

class XmlImportJob < Struct.new(:file, :supplier_id, :user_id, :directory)
  def perform
    Product.xml_import(file, supplier_id, user, directory)
  end

  def success(job)
    ProductMailer.xml_import_complete.deliver
  end

  def failure(job)
    ProductMailer.xml_import_failed.deliver
  end
end
Run Code Online (Sandbox Code Playgroud)

Delayed::Job.enqueue XmlImportJob.new(secure_url, 1, 1, directory)例如,当我运行它时,我收到一个Job failed to load: uninitialized constant XmlImportJob.错误.

我已经尝试保存我的自定义作业,该作业位于xml_import.rbapp/jobs和lib下的一个文件中,我得到了同样的错误.

目前我只尝试通过rails控制台运行它.即使显式调用require 'xml_import'哪个返回true,我也会得到相同的错误.

有成功使用自定义delayed_jobs经验的人是否知道我在做什么呢?

ruby ruby-on-rails delayed-job ruby-on-rails-3

2
推荐指数
1
解决办法
2032
查看次数

Rails执行太多SQL

我开始注意到终端我的Rails应用程序产生了太多的SQL语句,其中许多都不是必需的.我确实记得在某个地方阅读这可能是一个问题而且现在随着我的数据增长它显着减慢了应用程序的速度.

例如,我有包含曲目的版本.艺术家可以分配到曲目和发行.当我加载一个只有8个轨道的版本时,它似乎正在运行DB中的每个轨道来找到这些关系!?!

例如,请参见下文,这是一个非常小的示例,但这些轨道实际上都与该版本无关.它正在经历数据库中的每个轨道!

任何一般指针?

Artist Load (0.6ms)  SELECT `artists`.* FROM `artists` INNER JOIN `artists_tracks` ON `artists`.`id` = `artists_tracks`.`artist_id` WHERE `artists_tracks`.`track_id` = 12
  Artist Load (0.6ms)  SELECT `artists`.* FROM `artists` INNER JOIN `artists_tracks` ON `artists`.`id` = `artists_tracks`.`artist_id` WHERE `artists_tracks`.`track_id` = 19
  Artist Load (0.6ms)  SELECT `artists`.* FROM `artists` INNER JOIN `artists_tracks` ON `artists`.`id` = `artists_tracks`.`artist_id` WHERE `artists_tracks`.`track_id` = 21
  Artist Load (0.9ms)  SELECT `artists`.* FROM `artists` INNER JOIN `artists_tracks` ON `artists`.`id` = `artists_tracks`.`artist_id` WHERE `artists_tracks`.`track_id` = 22
  Artist Load (0.7ms)  SELECT …
Run Code Online (Sandbox Code Playgroud)

sql ruby-on-rails ruby-on-rails-3

1
推荐指数
1
解决办法
538
查看次数