我从this example开始,我设法让一切都在sinatra上工作。
但是我想在我的Rails应用程序中使用它,所以我做了以下几点:
在rails中我做了:
在config/initializers
文件中,我添加了sinatra中的整个块,之后我写了一个类GoogleCalendar::Base
,我有:
class GoogleCalendar::Base
class << self
attr_accessor :api_client, :calendar_api
end
def self.configure
yield self if block_given?
end
就像这样我替换了set :api_client, client, set :calendar, calendar
在我的应用程序控制器中,我已经添加了:
def user_credentials
...
(what i've changed was instead of session i've added `see below`)
auth.update_token!(access_token: session[:access_token],
refresh_token: session[:refresh_token])
end
因为如果通过session
我没有工作,也许有人可以告诉我为什么? (会话之间的冲突?它正在使用cookie。)
此外,我在应用程序控制器中创建了其他函数,用于回调和获取内容。
def api_client
GoogleCalendar::Base.api_client
end
def calendar
GoogleCalendar::Base.calendar_api
end
最后,我创建了其余的控制器/视图,一切正常。
我的最后一个问题是:可以在Google::APIClient
文件夹中创建initialisers
,因为我注意到每次我在控制器中更改某些内容时代码会刹车,但如果我重新启动服务器一切正常。