小编Chr*_*nig的帖子

当我在.gemspec中拥有所有宝石时,如何避免捆绑者警告多个来源?

在我自己的宝石中,我Gemfile看起来基本上是这样的:

source 'https://my.gemserver.com'
source 'https://rubygems.org'

gemspec
Run Code Online (Sandbox Code Playgroud)

.gemspec将所有依赖项列为add_dependencyadd_development_dependency.

截至Bundler 1.8,我收到警告:

Warning: this Gemfile contains multiple primary sources. Using `source` more than
once without a block is a security risk, and may result in installing unexpected gems.
To resolve this warning, use a block to indicate which gems should come from the
secondary source. To upgrade this warning to an error,
run `bundle config disable_multisource true`.
Run Code Online (Sandbox Code Playgroud)

有没有办法解决此警告(没有通过捆绑配置静音)?我在Rubygems规范中找不到任何关于源选项的内容.

ruby rubygems bundler gemspecs

11
推荐指数
2
解决办法
5185
查看次数

OAuth ::未经授权401未经授权在rails中使用omniauth-twitter

当我点击[http://127.0.0.1:3000/auth/twitter]时,我在rails中收到OAuth :: Unauthorized 401 Unauthorized错误.我正在使用我的rails应用程序跟踪Railscast视频#241以进行Twitter身份验证.我已经google了很多,但找不到答案.

 Info regarding app on twitter:
 Callback URL: [http://127.0.0.1:3000/auth/twitter/callback]
 Website: [http://127.0.0.1:3000]


### omniauth.rb 
Rails.application.config.middleware.use OmniAuth::Builder do
  # provider :developer unless Rails.env.production?
  provider :twitter, ENV['75UOAIDmKrRXvXKBhNvKA'],    ENV['GrIaBI0tQy2TtjOtaFL9VxT6s9qq1sV7h9yRaZW4A']
end

### routes.rb
Chilli::Application.routes.draw do
  resources :posts
  root :to => 'posts#index'
  #match '/auth/:twitter/callback' => 'sessions#create', :as => :auth_callback
  match 'auth/twitter/callback', to: 'sessions#create'
end

### application.html.erb
<div id="user_nav">
<%= link_to "Sign in with Twitter", "/auth/twitter"%>
</div>

### sessions_controller.rb
class SessionsController < ApplicationController
  def create
    user = User.from_omniauth(env['omniauth.auth'])
    session[:user_id] = user.id
    redirect_to root_url, …
Run Code Online (Sandbox Code Playgroud)

twitter ruby-on-rails localhost omniauth

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

使用一系列等级计算字母等级

这里有Noob和Ruby.通过一些练习并撞墙.

练习:计算一系列成绩的字母等级

创建一个方法get_grade,它接受一组测试分数.数组中的每个分数应该在0到100之间,其中100是最大分数.

计算平均分数并将字母等级返回为字符串,即"A","B","C","D","E"或"F".

我一直在回复错误:

avg.rb:1: syntax error, unexpected tLBRACK, expecting ')'
def get_grade([100,90,80])
               ^
avg.rb:1: syntax error, unexpected ')', expecting $end
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所拥有的.我想坚持下面的方法或.join,因为我正在尝试使用我们在课堂上学习的方法.因此,总和,注入等不一定有用.我提前为请求的特殊性道歉:)我确信有更好的方法可以减少代码,但我只是想以这种方式开始学习它.

    def get_grade([100,90,80])
      get_grade = (array[0] + array[1] + array[2]).to_i / array.length.to_i
    case get_grade
      when 90..100
      "A"
      when 80..90
       "B"
      when 70..80
       "C"
      when 60..70
       "D"
      when 0..60
       "F"
      else
     "Error"
      end
    end

    puts get_grade([100,90,80])
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

Sage One API - unsupported_grant_type

我正在尝试按照使用Guzzle文档获取 Sage One API 的访问令牌 (v6) / Laravel 5.2(Laravel 的参与与此问题无关),它停留在“请求访问令牌”阶段。

错误

Client error: `POST https://api.sageone.com/oauth2/token` resulted in a
 `400 Bad Request` response: {"error":"unsupported_grant_type"}
Run Code Online (Sandbox Code Playgroud)

违规代码

    $client = new Client([
        'base_uri'=>'https://api.sageone.com',
        'headers' => ['content_type' => 'application/x-www-form-urlencoded']
    ]);
    $data = [
        'client_id' => getenv('SAGE_CLIENT'),
        'client_secret' => getenv('SAGE_SECRET'),
        'code' => $request->code,
        'grant_type' => 'authorization_code',
        'redirect_uri'=>'https://myurl.com/sage/refresh'
    ];

    $response = $client->request('POST','/oauth2/token',['json' => $data]);
Run Code Online (Sandbox Code Playgroud)

文档说明“grant_type - 代码相关的授权类型。authorization_code 或 refresh_token。” ,我两个都试过了。其他 vars 都很好,很花哨,只是grant_type似乎失败了。

更新 1 调试头生成下面的输出。

* Hostname in DNS cache …
Run Code Online (Sandbox Code Playgroud)

php api oauth-2.0 guzzle sage-one

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

如何在IRB中的Mysql2 Gem中通过一次调用运行多个sql查询?

我正在玩mysql2(和mysql 5)gem以及结果和Enumerable结果.

我可以运行诸如的查询

results = client.query("select now()")
Run Code Online (Sandbox Code Playgroud)

我也可以运行诸如此类的查询

results = client.query("select version()")
Run Code Online (Sandbox Code Playgroud)

但我想要做的就是把它提升一个档次.在现实生活中,我假设人们运行多个查询.那么我怎样才能确保我能一次性获得版本和时间.

-

我尝试过的东西不起作用:

results = client.query("select version(); select now()")
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Mysql2::Error: You have an error in your SQL Syntax; check the manual that corresponds to your Mysql Version for the right syntax to use near 'select now()' at line1
Run Code Online (Sandbox Code Playgroud)

现在我明白我可以在Mysql Console中运行以下查询并获得结果,我将如何在Mysql2 Gem中做同样的事情:

select version();select now()
Run Code Online (Sandbox Code Playgroud)

我如何在一个命令行中使用Mysql2 gem(或者我需要两个).我问,因为在现实生活中,人们通常会运行多个查询,以便按照他们想要的方式获得结果.

ruby mysql mysql2

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

谁能解释一下?

我无法理解这条评论.

Array({:a => "a", :b => "b"}) #=> [[:a, "a"], [:b, "b"]]
Run Code Online (Sandbox Code Playgroud)

你能解释一下它的工作原理吗?

ruby arrays hash

2
推荐指数
3
解决办法
92
查看次数

为什么在使用默认对象初始化时,我的Hash不会被填充

鉴于此代码:

h = Hash.new([])

3.times do |i|
  h[:a] << i
end
Run Code Online (Sandbox Code Playgroud)

我希望h如此{:a => [0, 1, 2]},但它是空的.我究竟做错了什么?

ruby hash

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