较早一篇文章,说 ruby 读写 IO 占用内存和时间问题的:https://ruby-china.org/topics/31444
opal 玩家沙发。。。
#16 楼 @xiaoping_rubyist 这个我无法告诉你,没读文档。。。但是能大概猜到 rails4.2.5 就取消了自动识别 HASH,自动给你 JSON 化。。。RAILS 现在走的路线是由奢入俭,取消额外的黑魔法功能
#14 楼 @xiaoping_rubyist 楼上正解,我也不知道他那个topology_definition_unresolved
是什么东西,但是@topology
的确成功赋值了,不然输出不会有=>
@mystery,试试这个吧
render json: @topology.as_json.merge(topology_definition_unresolved: JSON[@topology.topology_definition_unresolved])
试试这个
render json: @topology, methods: :topology_definition_unresolved
问问topology_definition_unresolved
这个方法返回的是一个实例对象吗?
没研究过具体文档,不知道为什么一个行,一个不行,
但是你想把那个不行的搞成行,试试把JSON.parse(object)
换成object.as_json
我做过代码分享的 blog 网页,源代码
加了一点基本语法高光
哦。。。现在在玩 opal。。。对 javascript 不是很感冒的说。。。不过谢谢知识分享,学习了
国外很吃香呢。。。
我好奇你怎么回复他们的
放 initialiser 文件里吧。。。
# config/initializers/time_formats.rb
my_datetime_formats = { :default => "%Y-%m-%d %H:%M:%S" }
my_date_formats = { :default => '%Y-%m-%d' }
Time::DATE_FORMATS.merge!(my_datetime_formats)
Date::DATE_FORMATS.merge!(my_date_formats)
ok,很好,解决了就好,更新一下原贴,mark 个已解决,让后人乘凉
我不玩 coffeescript。。。继续飘。。。
请问你的 weibo 配置是在devise.rb
里面吗 (omniauth.rb 删除了吗?)
omniauth.rb
,在devise.rb
里面配置 key, secret 和 redirect_uri或者你给个:image_size 的配置来绕过这个错误
看来已经成功了,
疑点一:你在 devise.rb 里的配置和 omniauth.rb 里的配置一样的。。。应该一个就够了
疑点二:从错误提示来看,你的 gem 不是最新的,最新的第 58 行是这样的
image_size = options[:image_size] || :middle
OK, 如果我之前说的建议你都有了你现在代码差不多是这样:
# devise.rb
config.omniauth :weibo, SERVICES['weibo']['api_key'], SERVICES['weibo']['api_secret'], {
token_params: { redirect_uri: "http://127.0.0.1/users/auth/weibo/callback" }
}
# route.rb
devise_for :user, controllers: { omniauth_callbacks: 'users/omniauth_callbacks' }
这样还说 missing redirect uri, 我会在这个 gem omniauth-weibo-oauth2
里这行放个 debugger 看看究竟为啥 redirect_uri 没有 merge 进去
还有个疑点:
config.omniauth :weibo, SERVICES['weibo']['api_key'], SERVICES['weibo']['api_secret']
这句,里面缺了 redirect_uri 的设置
provider :weibo, ENV['WEIBO_KEY'], ENV['WEIBO_SECRET'],
token_params: {redirect_uri: "http://127.0.0.1:3000/auth/weibo/callback" }
提供的源代码有限,不知道怎么继续帮你 debug 了。。。
那你走过这个村,miss 掉这个店了,
改写devise_for :user
这句成:
devise_for :user, controllers: { omniauth_callbacks: 'users/omniauth_callbacks' }
还有你的 route 是什么设置这个 omniauth_callbacks 的?
那,你能再确定一下你这句代码
devise :omniauthable, omniauth_providers: [:weibo]
在class User < ActiveRecord::Base
里面吗?
哦,看你的代码,那个在 controller 里。。。
anyway 试试这个:
def weibo
user = User.from_omniauth!(request.env["omniauth.auth"])
sign_in_and_redirect user
end
还有,能 debug 一下,那个 weibo 方法是否真的被调用了
那就玩 sinatra 或者 cuba 咯。。。 纯 ruby 的话,做数学逻辑问题咯 https://www.codechef.com/之类的。。。很多
楼上的问题有点概念混淆了,namespace
是route
里的关键词,用法跟scope
对应相似
module 是对象前缀的定义
两者算是同时间使用的 (是不是必须的我没深究),一般用 module 前缀定义的对象,都会用到namespace
来定义对象的route
坐等答案,我也在玩 ActionCable
我想问
devise :omniauthable, omniauth_providers: [:weibo]
不是应该在 user.rb 里吗?
official rubydoc, rails guide 不错