岗位现在接收远程吗?
ISFP-A
额,报错上面说的是没安装 libmysqlclient。
如果你是 ubuntu 就运行 apt-get install libmysqlclient-dev
是 centos 就运行 yum install mysql-devel
然后再 bundle install 试试
好的,谢谢大佬指点,说起来,好像除了刚入门 rails 的时候,基本上很少看 Rails Guides 了,确实是个知识盲点,受教了
额,看来由易到难这条路确实很难走,我再试试吧,不行就回来
额,感谢大佬的回答,我再努力找找,感觉没得进步就会被淘汰,ruby 也终究逃不脱被卷的命运
额,大佬,请恕我不是很能赞成这个观点,因为当 gem 代码的功能很多时,功能之间会有很多交错,各种代理 (我承认有人可以在众多代码中轻易找到主线,但我也相信有一部人不行),一旦层级多一点,就很容易找不到主线,也很容易被与主线关联不大的代码吸引,所以才希望先找比较简单的 gem,这样即使有一点与主线无关的代码,也不会很影响对源码的理解。
额,我知道的 gem 不多,就是一些常用的 gem,比如 rails、device、kaminari、rest-client 和 nokogiri 等等,这里主要是想找那种比较容易读的 gem 或者功能片段,锻炼阅读源码的能力
目的已更新
哦,对的,我还没注意到这个细节 ,一直用 find 只查一个 id,理所当然的套用了以前的经验
tiku = Tiku.find(params[:integrity_checkbox])
这里有两种正常情况 (假设 params[:integrity_checkbox] 里的 id 都在 tiku 表中)
params[:integrity_checkbox] 里的 id 只有一个,例如 [1], 此时 tiku 是 Tiku 的一个实例 (代表 tiku 表中 id 为 1 的数据)
params[:integrity_checkbox] 里的 id 有若干个,例如 [1, 2], 此时 tiku 是 Tiku 的两个实例组合成的数组 (代表 tiku 表中 id 为 1 和 2 的两条数据),所以没有 timu 方法
另外可以建议先看错误显示
如果你的项目中有 byebug 之类的 gem 的话,可以在报错位置之前插入 byebug 调试,程序运行到 byebug 的位置时会暂停,你就可以打印出 timu 的内容等等,如果没有的话,也可以打印到控制台看相关内容
能了解一小半也挺厉害了,我还远着
ids
感谢大佬 ,清晰的感觉到前路漫漫
看来大佬们的思维都是一致的 ,感受到了差距
大佬,是因为看着头疼么
谢谢夸奖
唉,ruby 的工作也难找
你这个问题的意思是要在类方法里访问实例对象的实例变量,可以是可以,但是因为一个类会有很多实例,所以无法确定是要访问哪一个的实例对象的实例变量,感觉只能在类方法中新生成一个实例对象访问 aa 的默认值或者指定访问对象才行
class A
attr_accessor :aa
def initialize
@aa=10
end
class << A
attr_accessor :bb
def getaa
A.new.aa
end
def get_aa(obj)
obj.aa
end
end
end
gem 里应该还比较常见,因为 attr_accessor 就是生成 get 和 set 方法的,所以当需要对类实例变量的 get 和 set 时就在类的 singleton_class 里用 attr_accessor 就行 (类比正常的 class 和实例的关系)https://github.com/rails/rails/blob/4ace047c91d450af17eb218b0ea0139a6ea6f731/railties/lib/rails.rb#L26
感谢解答,大致明白
哦哦,大致明白 。 另外,这里其实可以不用 instance_variable_set 直接操作类实例变量
MyApp.instance_variable_set :@req, Rack::Request.new(env)
额,这样么 ,如果多线程只是省内存,那怎么能加快程序的运行速度呢 ,因为我工作中使用多线程一般都是为了提高程序的运行速度,所以有此疑问
这我就不清楚了,不过如果 call 并发安全的话。 我有一个疑问,服务器开多线程的作用是啥
你上面的做法,get 方法的 self 是 MyApp,所以直接执行 request.inspect 应该是空值,因为 MyApp 中没有初始化@route和@req。 后面的 call 方法里一直都是对 Base 的独有的类实例变量进行赋值,所以需要加 Base.request.inspect 才能取到值,因为全程 MyApp 都只是起到了初始化 Base 里的类实例变量的作用。
把 call 方法里的 Base 都改成 MyApp, get 方法里的 block 里应该就可以直接用 request.inspect 了 或者像@Rei大佬说的一样,用 Base 的环境运行 block 也行,至于并发隐患,我还不懂(好像是因为@req只有一个,所以会导致多个请求同时到来的时候,@req会混乱 )
class Base
class << self
['xx', 'oo'].each do | method|
define_method(method.to_sym) do |name, &block|
block.call(name)
end
end
end
end
yield 在这里取不到 block(可能是环境不在 def 方法下的原因?),同样这里的 block_given?也取不到正确的值,不过可以用&block 可以取到正确的 block