rails 中 Google::Cloud::Bigquery:Module 的未定义新方法

Undefined method new for Google::Cloud::Bigquery:Module in rails

您好,我正在尝试将数据从活动管理员上传到 bigquery 数据集中。我已经安装了 gem gem 'google-cloud-bigquery', '~> 0.20.1',但是当我尝试初始化一个新的 biggquery 对象时,它 returns 出现错误 undefined method `new' for Google::Cloud::Bigquery:Module。以下是我的活动管理资源:

ActiveAdmin.register BabyName do
  require 'google/cloud/bigquery'
  permit_params :name, :gender

  controller do
    def create
      if baby_name = BabyName.create(name: permitted_params[:baby_name][:name], gender: permitted_params[:baby_name][:gender])
        keyfile = '123.json'

        creds = Google::Cloud::Bigquery::Credentials.new keyfile


        bigquery = Google::Cloud::Bigquery.new(
          project_id: 'myproject',
          credentials: creds
        )

        p bigquery.project_id #=> 'my-project'

        dataset = bigquery.create_dataset 'baby'
        table = dataset.create_table 'baby_names' do |schema|
          schema.string 'name', mode: :required
          schema.string 'gender', mode: :required
          schema.integer 'count', mode: :required
        end

        file = File.open 'names/yob2014.txt'

        table.load file, format: 'csv'
        redirect_to admin_baby_name_path(baby_name.id), notice: 'Baby Name saved successfully!!'
      else
        render 'new'
      end
    end
  end

end

请帮忙谢谢

回顾几点:

  1. Ruby版本

版本 0.20.1 似乎很旧。请尝试最新的 v1.21.0 并告诉我们结果。

  1. Ruby authentication

尝试以下方法:

Google::Cloud::Bigquery.configure do |config|
  config.project_id  = "my-project-id"
  config.credentials = "path/to/keyfile.json"
end

bigquery = Google::Cloud::Bigquery.new

gcloud = Google::Cloud.new "my-todo-project-id",
                    "/path/to/keyfile.json"
bigquery = gcloud.bigquery

我认为通过此代码段,您将能够使用 bigquery 对象。