Ruby on Rails入门

Download ruby-on-rails eBook

备注

商标

Ruby on Rails(RoR)或Rails是一个开源的流行Web应用程序框架。 Rails使用Ruby,HTML,CSS和JavaScript来创建在Web服务器上运行的Web应用程序。 Rails使用模型 - 视图 - 控制器(MVC)模式,并从数据库一直提供到视图的完整库。

版本

发布日期
5.1.2 2017年6月26日
5 2016年6月30日
4.2 情节中字
4.1 2014年4月8日
4 2013年6月25日
3.2 2012-01-20
3.1 2011-08-31
3.0 2010-08-29
2.3 2009-03-16
2.0 2007-12-07
1.2 2007-01-19
1.1 2006-03-28
1.0 2005-12-13

使用非标准数据库适配器创建新的Rails应用程序

默认情况下,Rails随ActiveRecord 一起提供, ActiveRecord 是从具有相同名称的模式派生的ORM(对象关系映射)。

作为ORM,它构建为处理关系映射,更准确地说是为您处理SQL请求,因此仅限于SQL数据库。

但是,您仍然可以使用其他数据库管理系统创建Rails应用程序:

  1. 只需创建没有活动记录的应用程序
$ rails app new MyApp --skip-active-record
 
  1. Gemfile 添加自己的数据库管理系统
$ rails app new MyApp --skip-active-record
 
  1. bundle install 并按照所需数据库中的安装步骤进行操作。

在这个例子中, mongoidMongoDB 的对象映射,以及 - 为rails构建的许多其他数据库gem - 它也以与ActiveRecord 相同的方式从ActiveModel 继承, ActiveRecord 为许多功能提供了通用接口,例如验证,回调,翻译等。 。

其他数据库适配器包括但不限于:

  • 的DataMapper

  • 续集护栏

使用您选择的数据库创建一个新的Rails应用程序,包括RSpec测试工具

Rails使用sqlite3 作为默认数据库,但您可以使用您选择的数据库生成新的rails应用程序。只需添加-d 选项,然后添加数据库的名称。

$ rails new MyApp -T -d postgresql
 

这是一个(非详尽的)可用数据库选项列表:

  • MySQL的
  • 神谕
  • PostgreSQL的
  • sqlite3的
  • frontbase
  • IBM_DB
  • SQLSERVER
  • jdbcmysql
  • jdbcsqlite3
  • jdbcpostgresql
  • JDBC

-T命令指示跳过minitest的安装。要安装RSpec等替代测试套件,请编辑Gemfile并添加

$ rails new MyApp -T -d postgresql
 

然后从控制台启动以下命令:

$ rails new MyApp -T -d postgresql
 

创建Ruby on Rails应用程序

这个例子假设RubyRuby on Rails已经正确安装。如果没有,你可以在这里找到如何做到这一点

打开命令行或终端。要生成新的rails应用程序,请使用rails new命令,后跟应用程序的名称:

$ rails new my_app
 

如果要使用特定的Rails版本创建Rails应用程序,则可以在生成应用程序时指定它。为此,请使用rails _version_ new 后跟应用程序名称:

$ rails new my_app
 

这将在my_app 目录中创建一个名为MyApp 的Rails应用程序, Gemfile 使用bundle install 已在Gemfile 提到的gem依赖项。

要切换到新创建的应用程序目录,请使用cd 命令,该命令代表change directory

$ rails new my_app
 

my_app 目录有许多自动生成的文件和文件夹,构成了Rails应用程序的结构。以下是默认情况下创建的文件和文件夹列表:

文件夹目的
应用程序/ 包含应用程序的控制器,模型,视图,帮助程序,邮件程序和资产。
斌/ 包含启动应用程序的rails脚本,可以包含用于设置,更新,部署或运行​​应用程序的其他脚本。
配置/ 配置应用程序的路由,数据库等。
config.ru 用于启动应用程序的基于机架的服务器的机架配置。
D b/ 包含当前数据库架构以及数据库迁移。
Gemfile Gemfile.lock 这些文件允许您指定Rails应用程序所需的gem依赖项。这些文件由Bundler gem使用。
LIB / 适合您应用的扩展模块。
登录/ 应用程序日志文件
上市/ 世界上唯一看到的文件夹。包含静态文件和编译资产。
Rake文件此文件定位并加载可从命令行运行的任务。任务定义都是在Rails的各个组件中定义的。
README.md 这是您的应用程序的简要说明手册。您应该编辑此文件以告诉其他人您的应用程序的功能,如何设置等
测试/ 单元测试,固定装置和其他测试设备。
温度/ 临时文件(如缓存和pid文件)。
供应商/ 所有第三方代码的地方。在典型的Rails应用程序中,这包括销售的宝石。

现在您需要从database.yml 文件创建一个数据库:

5
$ rails new my_app
 
5
$ rails new my_app
 

现在我们已经创建了数据库,我们需要运行迁移来设置表:

5
$ rails new my_app
 
5
$ rails new my_app
 

要启动应用程序,我们需要启动服务器:

$ rails new my_app
 

默认情况下,rails将在端口3000启动应用程序。要使用不同的端口号启动应用程序,我们需要启动服务器,如,

$ rails new my_app
 

如果您在浏览器中导航到http:// localhost:3000 ,您将看到一个Rails欢迎页面,显示您的应用程序现在正在运行。

如果它抛出错误,可能有几个可能的问题:

  • config/database.yml 存在问题
  • 您的Gemfile 中有尚未安装的依赖项。
  • 您有待处理的迁移。运行rails db:migrate
  • 如果您移动到以前的迁移rails db:rollback

如果仍然抛出错误,那么你应该检查你的config/database.yml

用JSON创建Rails API

此示例假定您具有创建Rails应用程序的经验。

要在Rails 5中创建仅限API的应用程序,请运行

rails new name-of-app --api
 

在Gemfile中添加active_model_serializers

rails new name-of-app --api
 

在终端安装捆绑

rails new name-of-app --api
 

设置要使用的ActiveModelSerializer 适配器:json_api

rails new name-of-app --api
 

为您的资源生成一个新的脚手架

rails new name-of-app --api
 

这将生成以下文件:

控制器:app / controllers / tasks_controller.rb

rails new name-of-app --api
 

用脚手架生成资源

来自guides.rubyonrails.org:

而不是直接生成模型。 。 。让我们建立一个脚手架。 Rails中的一个脚手架是一整套模型,该模型的数据库迁移,操作它的控制器,查看和操作数据的视图,以及上述每个模型的测试套件。

以下是使用字符串名称和文本描述来构建名为Task 的资源的示例:

rails generate scaffold Task name:string description:text
 

这将生成以下文件:

rails generate scaffold Task name:string description:text
 

示例删除由scaffold为名为Task 的资源生成的文件

rails generate scaffold Task name:string description:text
 

生成控制器

要生成控制器(例如Posts ),请从命令行或终端导航到项目目录,然后运行:

$ rails generate controller Posts
 

您可以通过将generate 替换为g 来缩短此代码,例如:

$ rails generate controller Posts
 

如果你打开新生成的app / controllers / posts_controller.rb,你会看到一个没有动作的控制器:

$ rails generate controller Posts
 

可以通过传入控制器名称参数来为控制器创建默认方法。

$ rails generate controller Posts
 

要在模块中创建控制器,请将控制器名称指定为parent_module/controller_name 类的路径。例如:

$ rails generate controller Posts
 

这将生成以下文件:

$ rails generate controller Posts
 

控制器只是一个定义为从ApplicationController 继承的类。

在这个类中,您将定义将成为此控制器的操作的方法。

安装Rails

在Ubuntu上安装Rails

在干净的ubuntu上,Rails的安装应该是直截了当的

升级ubuntu包

sudo apt-get update
sudo apt-get upgrade
 

安装Ruby和Rails依赖项

sudo apt-get update
sudo apt-get upgrade
 

安装ruby版本管理器。在这种情况下,简单的是使用rbenv

sudo apt-get update
sudo apt-get upgrade
 

安装Ruby Build

sudo apt-get update
sudo apt-get upgrade
 

重启Shell

sudo apt-get update
sudo apt-get upgrade
 

安装红宝石

sudo apt-get update
sudo apt-get upgrade
 

安装导轨

sudo apt-get update
sudo apt-get upgrade
 

在Windows上安装Rails

第1步: 安装Ruby

我们需要安装Ruby编程语言。我们可以使用Ruby的预编译版本RubyInstaller。

  • rubyinstaller.org下载并运行Ruby Installer。
  • 运行安装程序。选中“将Ruby可执行文件添加到PATH”,然后安装。
  • 要访问Ruby,请转到Windows菜单,单击所有程序,向下滚动到Ruby,然后单击“使用Ruby启动命令提示符”。命令提示符终端将打开。如果键入ruby -v 并按Enter键,则应该看到已安装的Ruby版本号。

第2步: Ruby Development Kit

安装Ruby之后,我们可以尝试安装Rails。但是一些库Rails依赖于需要一些构建工具才能被编译,而Windows默认缺少这些工具。如果您在尝试安装Rails Gem::InstallError: The '[gem name]' native gem requires installed build tools. 时看到错误,则可以识别此错误Gem::InstallError: The '[gem name]' native gem requires installed build tools. 要解决这个问题,我们需要安装Ruby Development Kit。

  • 下载DevKit
  • 运行安装程序。
  • 我们需要指定一个文件夹,我们将永久安装DevKit。我建议将它安装在硬盘的根目录下,位于C:\RubyDevKit 。 (不要在目录名中使用空格。)

现在我们需要为Ruby提供DevKit工具。

  • 在命令提示符下,切换到DevKit目录。 cd C:\RubyDevKit 或您安装它的任何目录。
  • 我们需要运行Ruby脚本来初始化DevKit设置。输入ruby dk.rb init 。现在我们将告诉相同的脚本将DevKit添加到我们的Ruby安装中。输入ruby dk.rb install

现在,DevKit应该可供您在安装新库时使用的Ruby工具。

第3步: Rails

现在我们可以安装Rails了。 Rails是一个Ruby宝石。在命令提示符下,键入:

gem install rails

按Enter后, gem 程序将下载并安装该版本的Rails gem,以及Rails所依赖的所有其他Gem。

第4步: Node.js

Rails所依赖的一些库需要安装JavaScript运行时。让我们安装Node.js,以便这些库正常工作。

  • 这里下载Node.js安装程序。
  • 下载完成后,请访问您的下载文件夹,然后运行node-v4.4.7.pkg 安装程序。
  • 阅读完整许可协议,接受条款,然后在向导的其余部分单击“下一步”,将所有内容保留为默认值。
  • 可能会弹出一个窗口,询问您是否要允许该应用对您的计算机进行更改。单击“是”。
  • 安装完成后,您需要重新启动计算机,以便Rails可以访问Node.js.

计算机重新启动后,不要忘记转到Windows菜单,单击“所有程序”,向下滚动到Ruby,然后单击“使用Ruby启动命令提示符”。

Stats

1637 Contributors: 38
Monday, July 31, 2017
许可下: CC-BY-SA

不隶属于 Stack Overflow
Rip Tutorial: info@zzzprojects.com

下载电子书