在我自己的宝石中,我Gemfile看起来基本上是这样的:
source 'https://my.gemserver.com'
source 'https://rubygems.org'
gemspec
Run Code Online (Sandbox Code Playgroud)
我.gemspec将所有依赖项列为add_dependency和add_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规范中找不到任何关于源选项的内容.
当我点击[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) 这里有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) 我正在尝试按照使用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) 我正在玩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(或者我需要两个).我问,因为在现实生活中,人们通常会运行多个查询,以便按照他们想要的方式获得结果.
我无法理解这条评论.
Array({:a => "a", :b => "b"}) #=> [[:a, "a"], [:b, "b"]]
Run Code Online (Sandbox Code Playgroud)
你能解释一下它的工作原理吗?
鉴于此代码:
h = Hash.new([])
3.times do |i|
h[:a] << i
end
Run Code Online (Sandbox Code Playgroud)
我希望h如此{:a => [0, 1, 2]},但它是空的.我究竟做错了什么?