Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Google云存储和Carrierwave保存图像时出错_Ruby On Rails_Ruby_Google Cloud Storage_Carrierwave - Fatal编程技术网

Ruby on rails 使用Google云存储和Carrierwave保存图像时出错

Ruby on rails 使用Google云存储和Carrierwave保存图像时出错,ruby-on-rails,ruby,google-cloud-storage,carrierwave,Ruby On Rails,Ruby,Google Cloud Storage,Carrierwave,我使用carrierwave、fog和AWS S3保存图像 但我需要将这种方式转变为谷歌云存储 我用fog google找到了一些方法,但这已经过时了 所以我用carrierwave google storage gem在没有雾的情况下尝试了这个 但效果并不好 我在carrierwave谷歌存储git页面中执行了完全相同的过程 (链接:) 我附加了我的image_uploader.rb、carrierwave.rb和日志消息 image_uploader.rb class ImageUpload

我使用carrierwave、fog和AWS S3保存图像

但我需要将这种方式转变为谷歌云存储

我用fog google找到了一些方法,但这已经过时了

所以我用carrierwave google storage gem在没有雾的情况下尝试了这个

但效果并不好

我在carrierwave谷歌存储git页面中执行了完全相同的过程

(链接:)

我附加了我的image_uploader.rb、carrierwave.rb和日志消息

image_uploader.rb

class ImageUploader
carrierwave.rb

CarrierWave.configure do|config|
config.storage=:gcloud
config.gcloud_bucket='fullout linemanager存储'
config.gcloud\u bucket\u是\u public=false
config.gcloud\u已验证\u url\u过期=600
#config.gcloud\u content\u disposition='attachment'//或者您可以跳过此选项
config.gcloud\u属性={
有效期:600
}
config.gcloud\u凭据={
gcloud_项目:“全面测试”,
gcloud_密钥文件:“../fullout-test-01ed5e95d6fd.json”
}
结束
开发日志

(...)
app/controllers/application_controller.rb:13:in `render_500'
Started POST "/api/reactions" for ::1 at 2020-01-31 11:31:35 +0900
Processing by Api::ReactionsController#create as JSON
  Parameters: {"name"=>"1", "reaction_type"=>"image", "contents"=>"[ NO TEXT ]", "tag"=>"ALL", "image"=>#<ActionDispatch::Http::UploadedFile:0x00007fc4b8976a38 @tempfile=#<Tempfile:/var/folders/jb/qnz4lt193kz7wzj06xrp9q5w0000gn/T/RackMultipart20200131-12922-1n5x9ks.png>, @original_filename="disney2500.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"image\"; filename=\"disney2500.png\"\r\nContent-Type: image/png\r\n">}
  [1m[36mUser Load (0.5ms)[0m  [1m[34mSELECT  `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1[0m
  ↳ app/controllers/api/reactions_controller.rb:188
Unpermitted parameter: :format
  [1m[36mOption Load (0.3ms)[0m  [1m[34mSELECT  `options`.* FROM `options` WHERE `options`.`id` IS NULL LIMIT 1[0m
  ↳ app/controllers/api/reactions_controller.rb:63
  [1m[35m (0.5ms)[0m  [1m[35mBEGIN[0m
  ↳ app/controllers/api/reactions_controller.rb:64
  [1m[36mReaction Create (0.5ms)[0m  [1m[32mINSERT INTO `reactions` (`name`, `contents`, `reaction_type`, `channel_id`, `tag`, `target_number`, `image`, `created_at`, `updated_at`) VALUES ('1', '[ NO TEXT ]', 'image', '1609035039', 'ALL', 0, 'disney2500.png', '2020-01-31 02:31:35', '2020-01-31 02:31:35')[0m
  ↳ app/controllers/api/reactions_controller.rb:64
  [1m[35m (41.1ms)[0m  [1m[31mROLLBACK[0m
  ↳ app/controllers/api/reactions_controller.rb:64
Completed 500 Internal Server Error in 80ms (ActiveRecord: 43.0ms)
(...)
(…)
app/controllers/application_controller.rb:13:in'render_500'
在2020-01-31 11:31:35+0900时开始针对::1发布“/api/反应”
通过Api进行处理::ReactionController#创建为JSON
参数:{“名称”=>“1”、“反应类型”=>“图像”、“内容”=>“[无文本]”、“标记”=>“全部”、“图像”=>}
[1m[36mUser负载(0.5ms)[0m[1m[34M从'users'中选择'users!'.'id`=1个由'users'订购的订单。'id'ASC限制1[0m
↳ app/controllers/api/reactions\u controller.rb:188
不允许的参数::格式
[1m[36m移动负载(0.3ms)[0m[1m[34m从'options'中选择'options!'.'id'为空限制1[0m
↳ app/controllers/api/reactions\u controller.rb:63
[1m[35m(0.5ms)[0m[1m[35mBEGIN[0m
↳ app/controllers/api/reactions\u controller.rb:64
[1m[36M反应创建(0.5ms)[0m[1m[32min插入“反应”('name'、'contents'、'reaction_type'、'channel_id'、'tag'、'target_number'、'image'、'created_at'、'updated_at')值('1'、'NO TEXT]、'image'、'1609035039'、'ALL',0',disney2500.png'、'2020-01-31-02:35'、'2020-01-31:31:35')[0m
↳ app/controllers/api/reactions\u controller.rb:64
[1m[35m(41.1ms)[0m[1m[31mROLLBACK[0m
↳ app/controllers/api/reactions\u controller.rb:64
在80毫秒内完成500个内部服务器错误(ActiveRecord:43.0毫秒)
(...)
反应控制器.rb

def创建
@反应=反应。新(反应参数)
选项\u id=params[:匹配\u选项]
tags=params[:tag].split(“,”)
@option=option.find_by(id:option_id)

如果@reaction.save#我建议您使用官方

要上载文件,可以执行以下操作:

# project_id        = "Your Google Cloud project ID"
# bucket_name       = "Your Google Cloud Storage bucket name"
# local_file_path   = "Path to local file to upload"
# storage_file_path = "Path to store the file in Google Cloud Storage"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.bucket bucket_name

file = bucket.create_file local_file_path, storage_file_path

puts "Uploaded #{file.name}"

在中,您可以找到更多使用Ruby在GCS中执行其他任务的示例

您是指“ActiveStorage”吗?事实上,我正在使用ActionDispatch::Http::UploadedFile保存我的图像,但存在未经许可的参数::格式错误。@Realpro据我所知,Jose建议使用官方文件。您是否尝试过这种方法,但不适用于您?我也尝试过您建议的这种方法,但效果不好。我有什么特别之处吗必须更改我的GCP设置吗?我想知道为什么这在我的AWS S3中工作得很好,即使不在GCPI中,但在GCP站点和rails guide站点上遵循相同的示例代码,而这些根本不起作用……我尝试了上面由Jose提供的教程,它符合我的预期。您能分享一下使用上述教程时收到的错误消息吗?