📅  最后修改于: 2021-01-26 01:59:08             🧑  作者: Mango
下面列出了最常见的Ruby on Rails面试问题和解答。
Ruby on Rails是用Ruby语言编写的服务器端Web应用程序开发框架。与其他语言和框架相比,它可使您编写更少的代码。它包括根据MVC模式创建数据库支持的Web应用程序所需的一切。
DRY代表“ Don’t Repeat Yourself”软件开发的原则,其中指出:“每条知识都必须在系统中具有权威,明确,单一的表示形式。如果同一部分代码不会一次又一次重复,则此代码将更具可维护性,可扩展性。和更少的bug。
Rails 5.0.1于2016年12月21日发布。它引入了Action cable,Turbolinks 5和API模式。
DRY代表“Convention over Configuration”。它对在Web应用程序中执行许多操作的最佳方法提供了不同的建议。
Ruby on Rails由David Heinemeier Hansson(DHH)创建。
有三种安装Ruby on Rails的方法:
Ruby on Rails可以结合简单的文本编辑器或IDE结合使用。
下面列出了一些Rails IDE:
Rails提供了一些用于开发Rails应用程序的出色工具,这些工具基于命令行打包为脚本使用。
以下是Rails应用程序中使用的最有用的Rails脚本:
Ruby on rails不支持功能包括:
Ruby中的超级函数用于调用原始方法。它调用当前方法的超类实现。
一个完美的ORM将数据库相关的数据详细信息隐藏在对象层次结构的后面。在Rails中,ORM由Active Record实现,Active Record是Rails库中最关键的组件之一。
使用Active Record时,您不再需要像处理表、行或列一样处理数据库;您的应用程序仅需要处理类,属性和对象。
Active Record基于Martin Fowler设计模式创建的。仅通过这种设计模式,Active Record便获得了名称。少数几行代码也能很好地工作且容易使用。
如果在数据库和类中遵循正确的命名方案,则Active Record Rails应用程序根本不需要任何配置。
在Rails中,model是类。该子系统在ActiveRecord库中实现。该库提供了数据库表和操作数据库记录的Ruby程序代码之间的接口。
C:\ruby\application>ruby script/generate migration table_name
The 'defined' operator is used to check whether the expression passed has been defined or not.
When we make a call to super, the parent method which has the same arguments as child one is invoked.
The syntax of each iterator is
哈希是键值对的集合。
创建块的语法为:
block_name
{
??.
??
}
变量的名称以小写形式给出,名称中的不同单词使用下划线分割开(object_name)。
proc是对象,而blocks是代码的一部分。
单引号字符串表示形式,不允许执行字符串内插和处理ASCII转义码。
借助Rails migration,Ruby可以更改数据库模式。
您必须使用以下命令为主题创建控制器:
C:\ruby\library> ruby script/generate controller subject
视图代表应用程序中特定格式的数据。该子系统在ActionView库中实现。该库是基于嵌入式Ruby(Erb)的系统,该系统定义用于数据表示的表示模板。
Controller将流量定向到视图和模型。该子系统在ActionController库中实现。该库是位于ActiveRecord和ActionView之间的数据代理。
RVM代表Ruby Version Manager。它是一个命令行工具,可让您有效地安装,管理和使用不同的Ruby环境。使用RVM,您可以轻松安装不同版本的Ruby,并在它们之间快速切换。
句法:
RVM的基本语法是
rvm command_options command ruby_to_act_on
Ruby中的Gems用于扩展核心Ruby发行版的功能。它们在程序中添加了特定功能。某些宝石也随Ruby安装一起安装,以提供称为宝石集的特定环境。您可以在系统中安装同一gem的不同版本。
要了解Ruby中所有可用的gem,请使用以下命令:
rvm gemset list
要升级RVM,请使用以下命令:
rvm et head
Rails捆绑器通过跟踪所需的合适宝石为应用程序提供恒定的环境。
要使用捆绑程序,请使用以下命令:
gem install bundler
迁移通过使用DSL以一致且有组织的方式更改了应用程序的数据库架构。
创建迁移文件的语法:
application_dir> rails generate migration table_name
有关更多信息:单击此处
rake db:migrate
Rails路由器识别URL,并将其分派给控制器的动作。它还会生成路径和URL。 Rails路由器处理URL的方式与其他语言路由器不同。它确定请求的控制器,参数和操作。
Rails路由器的主要用途是:
REST对理解Rails中的路由非常有帮助。它代表代表性状态转移。 REST使用几种HTTP方法来表示用户或应用程序执行的操作的类型。
嵌套支架是为Rails 4.2和5生成一组正确工作的嵌套资源的命令。
特征
从控制器的角度来看,有三种创建HTTP响应的方法:
Rails中的yield语句决定在哪里在布局中呈现动作内容。如果布局中没有yield语句,则将呈现布局文件本身,但是动作模板中的其他内容将无法正确放置在布局中。
Rails过滤器是在执行控制器的action方法之前或之后运行的方法。 Rails支持三种类型的过滤方法:
所有Ruby方法都至少具有这些保护级别之一。
Rails还使用单独的数据库进行测试。 Rails使用Ruby Test :: A单元测试库。 Rails应用程序测试通常使用Rake实用程序运行。
Rails支持三种类型的测试:
Rails缓存具有三种粒度级别:
Rails验证为每个Active Record模型类定义有效状态。它们用于确保仅将有效的详细信息输入到数据库中。
有效吗?触发您的验证,如果没有发现错误,则返回true,否则返回false。
无效吗?是有效的反向吗?它触发您的验证,如果无效则返回true,否则返回false。
“无干扰的JavaScript”技术被认为是前端社区中的最佳技术。
传递符号会在您的系统中引发多次攻击。符号垃圾收集器收集的符号可以防止您的系统遭受多种攻击。
它是一个框架,用于通过WebSockets扩展Rails以添加一些功能。它非常顺利地将WebSockets与Rails应用程序的其余部分集成。它允许您快速向应用程序添加一些实时功能。
TextMate :TextMate主要用于Mac操作系统。它允许您将扩展写入基本环境。扩展插件插入TextMate,以向基础编辑器添加新功能。这些扩展称为捆绑包。
E :电子文本编辑器的构建就像TextMate编辑器一样,可以在Windows上使用。它复制了TextMate的许多功能,甚至允许使用TextMate捆绑软件。
IntelliJ IDEA :IntelliJ IDEA是由JetBrains制成的商业IDE。之前,它还用于Java开发。 JetBrains 7.0版已向IntelliJ IDEA添加了Rails支持。
NetBeans :NetBeans是Sun的IDE。以前,它用于Java开发。 Sun 7.0版已向NetBeans添加了Rails支持。
Eclipse :Eclipse IDE是当今最常用的IDE。使用插件RadRails,可以将Rails支持完全添加到Eclipse环境。
Heroku :Heroku IDE提供了一种新颖的编写Rails应用程序的方式。它完全在线上用于开发应用程序。您无需在系统上安装任何软件即可使用Heroku。它不支持Internet Explorer。
Aptana Studio :Aptana的产品是基于Eclipse项目的独立桌面IDE。它与Eclipse非常相似。 Rails功能打包为Aptana Studio环境的插件。
RubyMine :RubyMine IDE是Rubyists的首选。与其他IDE相比,它提供了许多额外的功能。它的一项功能包括点击和跟随。当您单击一个函数,它将带您进入正在调用的函数。当多个功能共享相同的名称并驻留在不同的文件和文件夹中时,此功能将派上用场。其他功能是Git注释和Git比较。
Rails控制台是一个命令行实用程序,可从命令行运行Rails应用程序。 Rails控制台是Ruby IRB的扩展。它提供IRB的所有功能以及自动加载Rails应用程序环境的能力,包括其所有类和组件。它可以帮助您逐步完成应用程序。
这些导轨包括代码生成器脚本,这些脚本用于自动为应用程序生成模型和控制器类。开发Web应用程序时,代码生成可提高您的生产力。通过运行generator命令,将生成所有模型和控制器类的框架文件。它还为生成的每个模型生成数据库迁移文件。
Rails配置为自动使用WEBrick服务器。该服务器是用纯Ruby编写的,并且几乎支持所有平台,例如Windows,Mac或Unix。另外,如果您的系统中安装了Mongrel或Lighttpd服务器,Rails会使用其中任何一个服务器。
所有三个Rails服务器均具有自动重载代码的功能。这意味着,当您更改源代码时,不需要重新启动服务器。