殊途同归,实际上都是一个目的。 大多数时候都是 面向对象编程 和 函数式编程 风格的不同。
我觉得 Elixir 或者 Phoenix 对比 Rails 更多的是代码的清晰度,还有 OTP 的加成,对于 Benchmark 性能,反倒不是那么重要了。
2006?
不管如何,别人是自己交的 5 万块,都是自己挣得,有自己支配的理由,我们看东西也不要光看这个 5 万了,相信管理者也只是看到了文章所体现出来的正能量,这才是我们真正需要的,或许下次这样的文章在加精的过程中可以增加点管理员加精的理由什么的,写在文章的抬头,这样可以引导大家如何看待这个问题,而且这也可以说明管理员的态度。 不过现在这样的情况,其实很多人都会想,打死我也不信你没打广告。 清者自清,我还是相信本站的管理员同志的。
自己造个轮子更好
多那个空的是为了当你全部不选的时候不能 update 数据
试试 main_app.root_path
@qinfanpeng to_hash
额,信息太少
多写点例子自己试试,比看文章有用多了,当然基础知识是必须的
devise 有处理数据输入并保存的功能,这样如果没有其它特定的需求,它的子类就可以直接通过 super 来调用
SQLite3 数据库不支持 Array 数组类型,你可以利用自定义 Type 的方式来实现。
我的意思是说如果在生产环境是不会有这样的出错信息的,他是直接显示 404 错误页面,但是如果在开发环境下就是目前你看到的页面
开发模式下会显示详细的错误信息的
irb(main):041:0> require 'logger'
=> false
irb(main):042:0>
irb(main):043:0* class AuditDecorator
irb(main):044:1> def initialize (object)
irb(main):045:2> @object = object
irb(main):046:2> @logger = Logger.new(STDOUT)
irb(main):047:2>
irb(main):048:2* [:define_singleton_method, :send, :object_id].each do |name|
irb(main):049:3* define_singleton_method(name) do |*args, &block|
irb(main):050:4* p "define #{name}, current_self #{self}"
irb(main):051:4> @logger.info("calling '#{name}' on #{@object.inspect}")
irb(main):052:4> @object.send(name, *args, &block)
irb(main):053:4> end
irb(main):054:3> end
irb(main):055:2> end
irb(main):056:1> end
=> :initialize
irb(main):057:0>
irb(main):058:0* s1 = AuditDecorator.new("ruby!")
"define define_singleton_method, current_self #<AuditDecorator:0x007f8ef12a1188>"
I, [2016-04-07T22:44:47.403807 #2267] INFO -- : calling 'define_singleton_method' on "ruby!"
"define define_singleton_method, current_self #<AuditDecorator:0x007f8ef12a1188>"
I, [2016-04-07T22:44:47.403938 #2267] INFO -- : calling 'define_singleton_method' on "ruby!"
"define send, current_self ruby!"
NoMethodError: undefined method `info' for nil:NilClass
from (irb):51:in `block (2 levels) in initialize'
from (irb):52:in `block (2 levels) in initialize'
from (irb):49:in `block in initialize'
from (irb):48:in `each'
from (irb):48:in `initialize'
from (irb):58:in `new'
from (irb):58
from /Users/xiaohui/.rbenv/versions/2.2.3/bin/irb:11:in `<main>'
enable_extension "intarray"
, 然后使用 idx
App
开发的时候是通过Api
获取数据然后再通过App
端的逻辑来决定如何显示,在根本上和turbolinks
的逻辑有点类似,turbolinks
通过xhr
获取数据然后根据设定改变当前页面的内容,实际上也是这个模式,而turbolinks-android
也只是封装了turbolinks
的javascript
和android
的接口,实际上也就是提供了类似于Api
的方式,
visitProposedToLocationWithAction
决定如何处理links
onPageFinished
,visitCompleted
决定收到的结果如何处理
onReceivedError
决定如何处理错误信息
pageInvalidated
自动处理更新assets
check_openid 的 redirect_to 那里要 return 一下
我去,我已经买了,顺便请忽略这一楼!
#23 楼 @runup 自己用irb
多试试看,对于ruby
的继承链有点多的了解了以后再思考这些比较细致的问题,多看看Ruby元编程
,我自己也前前后后翻了 3 遍,但是对于有些概念还是摸不透,也要用irb
来验证自己的想法
irb(main):033:0> BasicObject.instance_methods.join ','
"==,equal?,!,!=,instance_eval,instance_exec,__send__,__id__"
irb(main):034:0> Object.instance_methods(false).join ','
"methods,private_methods,protected_methods,public_methods,singleton_methods"
irb(main):035:0> Kernel.instance_methods(false).join ','
"nil?,===,=~,!~,eql?,hash,<=>,class,singleton_class,clone,dup,itself,taint,tainted?,untaint,untrust,untrusted?,trust,freeze,frozen?,to_s,inspect,methods,singleton_methods,protected_methods,private_methods,public_methods,instance_variables,instance_variable_get,instance_variable_set,instance_variable_defined?,remove_instance_variable,instance_of?,kind_of?,is_a?,tap,send,public_send,respond_to?,extend,display,method,public_method,singleton_method,define_singleton_method,object_id,to_enum,enum_for,ai,awesome_inspect,awesome_print"
irb(main):036:0> Class.instance_methods(false).join ','
"allocate,new,superclass,instance_methods,private_instance_methods,protected_instance_methods,public_instance_methods"
irb(main):037:0> Module.instance_methods(false).join ','
"freeze,===,==,<=>,<,<=,>,>=,to_s,inspect,included_modules,include?,name,ancestors,instance_methods,public_instance_methods,protected_instance_methods,private_instance_methods,constants,const_get,const_set,const_defined?,const_missing,class_variables,remove_class_variable,class_variable_get,class_variable_set,class_variable_defined?,public_constant,private_constant,singleton_class?,include,prepend,module_exec,class_exec,module_eval,class_eval,method_defined?,public_method_defined?,private_method_defined?,protected_method_defined?,public_class_method,private_class_method,autoload,autoload?,instance_method,public_instance_method"
irb(main):038:0> class A
irb(main):039:1> end
nil
irb(main):040:0> A.ancestors
[
[0] A < Object,
[1] Object < BasicObject,
[2] Kernel,
[3] BasicObject
]
就是说 Class 的超类是 Module
#30 楼 @runup Ruby 中所有的都是对象。因为 :my_method "my_method" my_method 这几个只有第三个没有具体的值 要不你再试试,你仔细看看 send 方法是做什么的
class MyClass
def my_method(my_arg)
puts my_arg*2
end
end
obj = MyClass.new
obj.send(:my_method, 3)
obj.send("my_method", 6)
my_method = "my_method"
obj.send(my_method, 6)
my_method = :my_method
obj.send(my_method, 6)
irb(main):001:0> Module.class
=> Class
irb(main):002:0> Class.class
=> Class
irb(main):003:0> Class.superclass
=> Module
irb(main):004:0> Module.superclass
=> Object
irb(main):005:0> Class.superclass.superclass
# 如果code参数为空,则为认证第一步,重定向到微信认证
if code.nil?
redirect_to "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Weixin::APP_ID}&redirect_uri=#{request.url}&response_type=code&scope=snsapi_base&state=#{request.url}#wechat_redirect"
end
这里的 redirect_to 应该用 return,直接用 redirect_to 貌似无法跳转!
# 如果code参数为空,则为认证第一步,重定向到微信认证
if code.nil?
return request_for_code! request.url
end
+1
买了票也没机会去啊,能有现场直播么,能有视频么?
~/.railsrc
--skip-bundle --database=mysql --template='~/template.rb'
最后一行似乎要改成 -template ~/template.rb 不然会出错