gpt4 book ai didi

ruby-on-rails - 如何成为一名独立的 Ruby 程序员

转载 作者:数据小太阳 更新时间:2023-10-29 08:55:01 29 4
gpt4 key购买 nike

我厌倦了在使用许多过时的插件/gem 时提出无法回答的问题,有时它们并没有真正按照我真正想要的方式工作。

所以我的问题很简单:

如果我是一名 PHP 程序员,并且 Rails 是我的第一个框架,那么接下来我需要学习什么才能在使用麻烦的插件、代码片段或教程时依靠自己?

我曾经非常擅长使用 PHP 的电子商务系统(现在我知道 MVC 了,现在相当愚蠢),通常我会继续阅读插件的代码以找出它的作用,但显然是在做所以在 Ruby on Rails 中非常困难,我应该继续这样做,还是走正确的路? (顺便也学了,但是比起我还在用PHP和那个“电商框架”的时候,速度很慢)

最佳答案

这对我来说就像一个通用的编程问题。如果您在使用某些 Rails 插件时遇到任何问题,您可以随时使用一些硬核或简单的方法调试其代码,尝试理解并修复错误。问题是,在特定情况下应该使用哪些方法。

我举个例子。在调试 Rails 应用程序时,请始终检查 logs/production.loglogs/development.log(取决于您的工作模式)是否存在任何类型的错误. Ruby/Rails 中的每个错误都由一个巨大的堆栈跟踪表示,您应该从上到下阅读。就像这个:

Processing CommentsController#create (for ***.***.***.171 at 2010-08-27 03:31:29) [POST]
Parameters: {"authenticity_token"=>"[STRIPPED]"}, "last_comment_id"=>"0", "original_controller"=>"projects", "thread"=>"true", "thread_id"=>"Conversation_31", "commit"=>"Save", "_"=>"", "controller"=>"comments", "action"=>"create", "conversation_id"=>"31"}
Sent mail to email@email.com

ArgumentError (invalid byte sequence in UTF-8):
/usr/lib/ruby/1.9.1/net/protocol.rb:294:in `slice!'
/usr/lib/ruby/1.9.1/net/protocol.rb:294:in `each_crlf_line'
/usr/lib/ruby/1.9.1/net/protocol.rb:236:in `write_message_0'
/usr/lib/ruby/1.9.1/net/protocol.rb:250:in `block (2 levels) in write_message'
/usr/lib/ruby/1.9.1/net/protocol.rb:280:in `using_each_crlf_line'
/usr/lib/ruby/1.9.1/net/protocol.rb:250:in `block in write_message'
/usr/lib/ruby/1.9.1/net/protocol.rb:169:in `writing'
/usr/lib/ruby/1.9.1/net/protocol.rb:249:in `write_message'
/usr/lib/ruby/1.9.1/net/smtp.rb:878:in `block in data'
/usr/lib/ruby/1.9.1/net/smtp.rb:921:in `critical'
/usr/lib/ruby/1.9.1/net/smtp.rb:875:in `data'
/usr/lib/ruby/1.9.1/net/smtp.rb:655:in `send_message'
actionmailer (2.3.8) lib/action_mailer/base.rb:684:in `block in perform_delivery_smtp'
/usr/lib/ruby/1.9.1/net/smtp.rb:526:in `start'
actionmailer (2.3.8) lib/action_mailer/base.rb:682:in `perform_delivery_smtp'
actionmailer (2.3.8) lib/action_mailer/base.rb:523:in `deliver!'
actionmailer (2.3.8) lib/action_mailer/base.rb:395:in `method_missing'
app/models/emailer.rb:89:in `send_with_language'
app/models/conversation.rb:51:in `block in notify_new_comment'
app/models/conversation.rb:47:in `each'
app/models/conversation.rb:47:in `notify_new_comment'
...

我们到了! ArgumentError (invalid byte sequence in UTF-8): 行位于此跟踪的最顶部,始终告诉我们错误类型。这是一个参数错误!

之后,查看下一行:/usr/lib/ruby/1.9.1/net/protocol.rb:294:in 'slice!'。它以下列格式说明异常 (ArgumentError) 的产生位置:

 /path/to/file/:line:in `method_name'`

让我们打开那个被忽视的文件并找到该行周围的源代码:

def each_crlf_line(src)
buffer_filling(@wbuf, src) do
while line = @wbuf.slice!(/\A.*(?:\n|\r\n|\r(?!\z))/n)
yield line.chomp("\n") + "\r\n"
end
end
end

错误在以下行:

while line = @wbuf.slice!(/\A.*(?:\n|\r\n|\r(?!\z))/n)

从这一点我们知道错误在哪里,只需要修复它,但这个过程超出了我的短篇小说的范围。我只是想向您展示如何在 Rails 中处理错误。

关于ruby-on-rails - 如何成为一名独立的 Ruby 程序员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3585396/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com