如何雇佣Ruby开发人员
从网站和特定域语言(DSL),以桌面应用和物联网设备,一个Ruby开发者后端的编程经验,使您的软件项目的生命。
那么,你如何聘请Ruby开发者?接下来是一些技巧上Upwork寻找顶部Ruby开发顾问。
如何候选名单Ruby开发的专业人才
当您浏览可用的Ruby开发顾问时,制定一份您可能想要面试的专业人士的短名单是很有帮助的。您可以根据以下条件筛选配置文件:
- 技术适合。无论是mruby为on Rails的web开发物联网或Ruby,你想要一个Ruby开发者谁是熟悉的软件类型你想构建。
- 测试驱动的开发(TDD)。在发布日避免陷阱的最佳方法是在开发过程中频繁测试,并从最终用户那里获得反馈。
- 反馈查看过去客户的评论,看看他们是否有精彩的评价或危险的标志,这些可以告诉你与某个特定的Ruby开发人员一起工作是什么感觉。
如何写一篇有效的Ruby开发工作帖子
在心中对理想的Ruby开发人员有了清晰的印象之后,是时候编写这份工作了。虽然你不需要像招聘员工那样提供完整的职位描述,但你应该为承包商提供足够的细节,让他们知道自己是否适合这个项目。
工作职称
创建一个简单的标题,它准确地描述了您正在寻找的内容。这个想法是针对您的理想候选人可能键入求职栏以找到您的项目的关键字。下面是一些示例红宝石本职岗位职称:
- 后端开发人员需要使用Ruby on Rails的经验
- 全栈的Ruby on Rails开发需要。
- 红宝石程序员需要建立一个领域特定语言(DSL)
Ruby项目介绍
一个有效的Ruby工作岗位应该包括:
- 工作范围:从mvp(最小可行产品)到全功能spa(单页应用程序),列出你需要的所有可交付成果。
- 项目长度:你的工作岗位应该说明这是一个较小还是较大的项目。
- 背景:如果您更喜欢具有特定行业、软件或开发工具的经验,请在这里提及这一点。
- 预算:制定预算,注意你更喜欢按小时收费而不是固定价格合同。
Ruby开发人员的工作职责
下面是一些Ruby开发人员工作职责的例子:
- 将技术需求和UI/UX设计转化为代码
- 将UI集成到Ruby on Rails后端
- 一个应用程序的处理数据库设计和业务逻辑层
- 构建、测试、部署和维护一个ruby支持的应用程序
Ruby开发人员要求和资格
确保包含您在Ruby开发人员中寻找的任何要求和资格。以下是一些示例:
- Ruby编程语言
- 用于物联网设备等嵌入式系统的mruby
- Ruby on Rails的用于后端的Web开发
- RESTful服务、API和第三方库集成
- 有运行单元测试的经验
- 版本控制系统,如GitHub
Ruby开发人员常见问题< / h2 >
什么是红宝石?
红宝石,其框架一起,Ruby on Rails的(“导轨”),是一个令人难以置信的高效率,高水平后端的编程语言,一个大的初创企业和小型开发团队抽奖,有必要弄复杂,交通繁忙应用起来,在很短的时间运行。Rails的减轻了开发人员的工作量与“宝石” -prepackaged代码库,在一个大的方式流线的发展。
但真正让Ruby脱颖而出的是“程序员幸福感”,尤其是与它最大的竞争对手Python相比。Ruby吸引了许多喜欢其优雅的“少花钱多办事”理念的开发人员,而这些开发人员正受到欢迎。
雇佣一个Ruby开发人员要花多少钱?
决定雇佣Ruby开发人员的成本的第一步是定义您的需求。价格可能会因许多因素而变化,包括专业知识和经验、地点和市场条件。了解雇用Ruby开发人员的成本.
Ruby开发人员常见的错误
过度使用method_missing:没有人喜欢重复的代码,而使用method_missing进行元编程是我们喜欢在代码中加入的一种令人内疚的乐趣挑战,以避免运行时出现错误,并使其正常工作。
需要允许一个类快速使用另一个类中可用的方法吗?
使用method_missing。
有很多方法,但不想显式命名它们?
使用method_missing。
需要构建许多除了一些细微差异之外几乎相同的方法吗?
使用method_missing。
方法_缺少一个问题:速度太慢。每次调用method_missing时,Ruby运行时都必须沿着类链层次结构向上爬,以找到实际执行繁重任务的方法,从而使代码能够工作。大多数基准测试表明,方法_missing在运行时比使用普通的Ruby方法慢得多。对于上面的示例案例,一个更快的元编程工具是define_method,它允许您在加载类时动态定义加载的方法。
那么什么时候应该使用方法?当您处理基于模式的动态命名方法时,您不能合理地期望能够预测所有可能的方法名称组合。Ruby自己的活动记录动态查找器可能就是最好的例子。例如,如果您希望通过电子邮件从大量用户数据集中查找用户,并且您的用户具有电子邮件属性,则可以使用user.find_by_email('john)。doe@example.com“),即使您从未在User或ActiveRecord::基类下显式定义该方法。
过分依赖宝石:每个新的Rails开发人员在他们的职业生涯中都会达到一个特定的点,在这个点上,他们会受到RubyGems存储库的诱惑。你怎么能抗拒呢?Ruby广泛的gems目录得到了一个活跃的开源社区的支持。需要身份验证的帮助?试着设计。授权呢?康康能帮你搞定。如果你有一项任务需要帮助,那么很有可能会有一块宝石。
不幸的是,就像生活中所有其他的事情一样,可能有太多的好事。尽管gem功能强大,但在某一点上,您将开始注意到每一个新gem在程序员生产力和性能之间的权衡。太多的gem会降低性能,消耗资源,并使测试花费更长的时间。
一个臃肿的文件可能会成为未来破坏应用程序的bug的巢穴。高质量的gems尽量减少依赖性,但如果你不小心,你可能会发现自己管理了数百个gems。在这一点上,无论您从编写更少的代码中获得什么生产力,都会被消耗在管理依赖项、追踪隐藏的bug和保持应用程序最新方面。
解决办法是什么?节制。在下载gem之前,问问自己是否可以证明它使用了资源,是否需要它提供的所有功能。对您的gems进行选择有助于保持应用程序的精简。
应用逻辑渗透到视图中:Ruby on Rails遵循MVC(模型-视图-控制器)模式,其中模型负责数据,视图是数据的可视化表示,控制器是两者之间的桥梁。此模式的目标是分离应用程序的主要角色,以促进有效的代码重用并允许并行开发。当你开始偏离这些角色时,实现这个目标就变得困难了。
意见应只与可视化表示关注。但是,它是很有诱惑力的潜行应用程序逻辑到您的ERB模板,如下所示:
祝贺你
<%如果winning_player %>
<%= winning_player.name%>
其他< % % >
比赛者
< % % >结束
< / h2 >
将应用程序逻辑放入单个视图的效率低下不仅会导致代码重复,而且随着应用程序的扩展,管理大量混杂的Ruby和HTML代码会使维护变得更加困难。最好将该逻辑封装到可重用的帮助器函数、演示器或装饰器中。
“胖模型瘦控制器”走得太远:控制器做了很多事情,从会话处理渲染和重定向,但它基本上可以归结为模型和视图,接收请求,并提供相应的输出之间的中间人。默认情况下,该控制器已经在其平板很多。为了防止在控制器馅模型或视图逻辑的诱惑下,“脂肪模型瘦控制器”的原则就诞生了。问题解决了,对不对?
不是真的。现在,膨胀的问题已经转移到了模型上。每个模型都应该与数据库中的一个数据表相对应。模型对应的数据表应该由它单独负责。为了保持视图和控制器的精简,很容易将不太适合MVC范式的任何东西扔到模型中。事实证明,许多困扰膨胀视图和控制器的维护问题也扩展到了模型。解决方案是使用poro(普通的Ruby对象)来封装不适合任何MVC类别的东西。
让您的代码容易受到SQL注入的攻击:这是在黑客剧本SQL注入的最古老的招数,其中包括记录用户输入的字段谋取到SQL数据库的直接访问之一。在Rails中,其中需要用户输入(例如,打字在搜索字段中),以查询数据从数据库中此漏洞被发现。传统的方法来处理用户名看起来像这样的查询:
用户。find_by(名称:params[:名称])
这种方法容易受到SQL注入的影响。幸运的是,在Rails中,我们有基于动态属性的活动记录查找器,它作为参数化查询工作,可以正确处理传递的参数,避免SQL注入。
user.find_by_name(名字)
除了使用动态查找器,它还有助于只接受和构造来自外部输入(如搜索查询和表单)的值。永远不要构造INSERT和DELETE这样的SQL命令,不要向活动记录库中接受原始SQL查询、表名或列的方法发送不可信的输入。
提示和最佳做法
就拿Ruby开发者社区的优势
红宝石可能不是最流行的后台脚本语言,但那些谁使用它喜欢它。红宝石的设计充分考虑程序员的幸福,什么时候你看Ruby的巨大的常见软件开发问题的宝石,准备使用的解决方案库,是显而易见的创建。如果你需要快速原型项目,你几乎可以从组装宝石和样板代码的应用程序中的一个单元。
在哈希中使用符号而不是字符串
Ruby有一种称为符号的特殊数据类型,用于存储不必更改的变量名。符号的前缀是冒号,表示如下::symbol。与字符串不同,字符串是可变的,符号是不可变的,只占内存中的一个位置。
不变性对于散列是完美的,因为您不想更改散列键。散列与数组类似,只是它们可以使用任何对象作为索引。
Shopping_list ={:肉桂=> 1,:黄油=> 2,:苏打=> 6}
符号也比字符串更节省空间,因为设置多个变量等于相同的符号将访问内存中的相同位置。
经常测试你的代码
众所周知,测试驱动开发在软件开发中采用的是先测试后编码的方法,类似于这样:
- 红色的:为失败的软件功能编写测试
- 绿色:编写通过测试所需的最低代码
- 重构:根据最佳实践重写你的传递代码
除非您已经实践了TDD,否则似乎很难将常规的软件测试视为在推向生产之前捕获尽可能多的错误的必要的邪恶。
幸运的是,Ruby通过在其标准库(minitest/unit和test/unit)中为您提供实践TDD所需的一切,使TDD变得更容易。在这两个测试框架之间,您应该能够养成通过定期创建单元测试来编写更安全代码的习惯。一旦你习惯了编写单元测试,那么完整地练习TDD就不会那么令人畏惧了。
什么是红宝石?
红宝石,其框架一起,Ruby on Rails的(“导轨”),是一个令人难以置信的高效率,高水平后端的编程语言,一个大的初创企业和小型开发团队抽奖,有必要弄复杂,交通繁忙应用起来,在很短的时间运行。Rails的减轻了开发人员的工作量与“宝石” -prepackaged代码库,在一个大的方式流线的发展。
但真正让Ruby脱颖而出的是“程序员幸福感”,尤其是与它最大的竞争对手Python相比。Ruby吸引了许多喜欢其优雅的“少花钱多办事”理念的开发人员,而这些开发人员正受到欢迎。
雇佣一个Ruby开发人员要花多少钱?
决定雇佣Ruby开发人员的成本的第一步是定义您的需求。价格可能会因许多因素而变化,包括专业知识和经验、地点和市场条件。了解雇用Ruby开发人员的成本.
Ruby开发人员常见的错误
过度使用method_missing:没有人喜欢重复的代码,而使用method_missing进行元编程是我们喜欢在代码中加入的一种令人内疚的乐趣挑战,以避免运行时出现错误,并使其正常工作。
需要允许一个类快速使用另一个类中可用的方法吗?
使用method_missing。
有很多方法,但不想显式命名它们?
使用method_missing。
需要构建许多除了一些细微差异之外几乎相同的方法吗?
使用method_missing。
方法_缺少一个问题:速度太慢。每次调用method_missing时,Ruby运行时都必须沿着类链层次结构向上爬,以找到实际执行繁重任务的方法,从而使代码能够工作。大多数基准测试表明,方法_missing在运行时比使用普通的Ruby方法慢得多。对于上面的示例案例,一个更快的元编程工具是define_method,它允许您在加载类时动态定义加载的方法。
那么什么时候应该使用方法?当您处理基于模式的动态命名方法时,您不能合理地期望能够预测所有可能的方法名称组合。Ruby自己的活动记录动态查找器可能就是最好的例子。例如,如果您希望通过电子邮件从大量用户数据集中查找用户,并且您的用户具有电子邮件属性,则可以使用user.find_by_email('john)。doe@example.com“),即使您从未在User或ActiveRecord::基类下显式定义该方法。
过分依赖宝石:每个新的Rails开发人员在他们的职业生涯中都会达到一个特定的点,在这个点上,他们会受到RubyGems存储库的诱惑。你怎么能抗拒呢?Ruby广泛的gems目录得到了一个活跃的开源社区的支持。需要身份验证的帮助?试着设计。授权呢?康康能帮你搞定。如果你有一项任务需要帮助,那么很有可能会有一块宝石。
不幸的是,就像生活中所有其他的事情一样,可能有太多的好事。尽管gem功能强大,但在某一点上,您将开始注意到每一个新gem在程序员生产力和性能之间的权衡。太多的gem会降低性能,消耗资源,并使测试花费更长的时间。
一个臃肿的文件可能会成为未来破坏应用程序的bug的巢穴。高质量的gems尽量减少依赖性,但如果你不小心,你可能会发现自己管理了数百个gems。在这一点上,无论您从编写更少的代码中获得什么生产力,都会被消耗在管理依赖项、追踪隐藏的bug和保持应用程序最新方面。
解决办法是什么?节制。在下载gem之前,问问自己是否可以证明它使用了资源,是否需要它提供的所有功能。对您的gems进行选择有助于保持应用程序的精简。
应用逻辑渗透到视图中:Ruby on Rails遵循MVC(模型-视图-控制器)模式,其中模型负责数据,视图是数据的可视化表示,控制器是两者之间的桥梁。此模式的目标是分离应用程序的主要角色,以促进有效的代码重用并允许并行开发。当你开始偏离这些角色时,实现这个目标就变得困难了。
意见应只与可视化表示关注。但是,它是很有诱惑力的潜行应用程序逻辑到您的ERB模板,如下所示:
|
将应用程序逻辑放入单个视图的效率低下不仅会导致代码重复,而且随着应用程序的扩展,管理大量混杂的Ruby和HTML代码会使维护变得更加困难。最好将该逻辑封装到可重用的帮助器函数、演示器或装饰器中。
“胖模型瘦控制器”走得太远:控制器做了很多事情,从会话处理渲染和重定向,但它基本上可以归结为模型和视图,接收请求,并提供相应的输出之间的中间人。默认情况下,该控制器已经在其平板很多。为了防止在控制器馅模型或视图逻辑的诱惑下,“脂肪模型瘦控制器”的原则就诞生了。问题解决了,对不对?
不是真的。现在,膨胀的问题已经转移到了模型上。每个模型都应该与数据库中的一个数据表相对应。模型对应的数据表应该由它单独负责。为了保持视图和控制器的精简,很容易将不太适合MVC范式的任何东西扔到模型中。事实证明,许多困扰膨胀视图和控制器的维护问题也扩展到了模型。解决方案是使用poro(普通的Ruby对象)来封装不适合任何MVC类别的东西。
让您的代码容易受到SQL注入的攻击:这是在黑客剧本SQL注入的最古老的招数,其中包括记录用户输入的字段谋取到SQL数据库的直接访问之一。在Rails中,其中需要用户输入(例如,打字在搜索字段中),以查询数据从数据库中此漏洞被发现。传统的方法来处理用户名看起来像这样的查询:
用户。find_by(名称:params[:名称]) |
这种方法容易受到SQL注入的影响。幸运的是,在Rails中,我们有基于动态属性的活动记录查找器,它作为参数化查询工作,可以正确处理传递的参数,避免SQL注入。
user.find_by_name(名字) |
除了使用动态查找器,它还有助于只接受和构造来自外部输入(如搜索查询和表单)的值。永远不要构造INSERT和DELETE这样的SQL命令,不要向活动记录库中接受原始SQL查询、表名或列的方法发送不可信的输入。
提示和最佳做法
就拿Ruby开发者社区的优势
红宝石可能不是最流行的后台脚本语言,但那些谁使用它喜欢它。红宝石的设计充分考虑程序员的幸福,什么时候你看Ruby的巨大的常见软件开发问题的宝石,准备使用的解决方案库,是显而易见的创建。如果你需要快速原型项目,你几乎可以从组装宝石和样板代码的应用程序中的一个单元。
在哈希中使用符号而不是字符串
Ruby有一种称为符号的特殊数据类型,用于存储不必更改的变量名。符号的前缀是冒号,表示如下::symbol。与字符串不同,字符串是可变的,符号是不可变的,只占内存中的一个位置。
不变性对于散列是完美的,因为您不想更改散列键。散列与数组类似,只是它们可以使用任何对象作为索引。
Shopping_list ={:肉桂=> 1,:黄油=> 2,:苏打=> 6} |
符号也比字符串更节省空间,因为设置多个变量等于相同的符号将访问内存中的相同位置。
经常测试你的代码
众所周知,测试驱动开发在软件开发中采用的是先测试后编码的方法,类似于这样:
- 红色的:为失败的软件功能编写测试
- 绿色:编写通过测试所需的最低代码
- 重构:根据最佳实践重写你的传递代码
除非您已经实践了TDD,否则似乎很难将常规的软件测试视为在推向生产之前捕获尽可能多的错误的必要的邪恶。
幸运的是,Ruby通过在其标准库(minitest/unit和test/unit)中为您提供实践TDD所需的一切,使TDD变得更容易。在这两个测试框架之间,您应该能够养成通过定期创建单元测试来编写更安全代码的习惯。一旦你习惯了编写单元测试,那么完整地练习TDD就不会那么令人畏惧了。