Rails: 从零到部署至服务器

which gem

在这篇文章里,我们将学到

1. 怎么用Rails来生成我们的第一个app。

2. 学会怎么使用Git进行版本控制。

3.怎么将程序部署至Heroku,Rails服务提供商。

Ruby on Rails是一个最流行、最强大的构建动态网站的一个框架。有很多知名的企业使用Rails,例如:

37signal、Github、Shopify、Scribd、Twitter、Disney、Hulu等等。

为什么Rails会这么流行呢?首先因为Rails是一个在MIT协议下得开源程序。其次,Rails也拥有很多优雅和

有竞争力的设计。通过扩展Ruby,Rails为编写网站应用创建了一种优秀的域名描述语言。因此,许多普通的编程

任务--例如生成HTML、生成数据模型、生成URL路由--用Rails来完成都很容易,而且生成的应用的代码非常简洁,具有很高的可读性。


Rails也适应网页开发和框架设计的快速发展。例如,Rails是第一个全面使用REST的框架。而且当其他框架的开发者在新技术上取得成功,

David Heinemeier Hansson和Rails核心团队会毫不犹豫地吸收他们的想法。

最后,Rails受益于充满不同寻常狂热得社区。这使得有几百人为Rails贡献代码。还有定期会议,大量的gem,丰富的博客,

还有许多高质量的论坛以及IRC频道。

许多Rails程序员也使得处理一些不可思议的错误更加容易,“Google错误信息”的算法几乎总能得到相关的博客或者论坛话题。


工欲善其事,必先利其器。下面我们首先选择编辑器。

IDE

最出名的Rails IDE是RadRails和RubyMine。

编写Rails程序你可以选择以上两者之一,或者其他的。

或者你更偏向于用文本编辑器的话,请看下文。


文本编辑器和命令行

和许多程序员一样,我更喜欢使用文本编辑器。

Windows和Linux下,推荐Subline Text 2, 跨平台编辑器;Mac下推荐注明的文本编辑神器TextMate。

命令行终端选用iTerm或者系统自带的都可以。Windows下最好使用虚拟机或者Rails Installer .

假如你用Sublime Text, 最好根据Rails Tutorial Sublime Text配置你的Sublime Text。

Rails Tutorial Sublime Text


浏览器

浏览器最好选择FireFox、Safari、或者Chrome。便于调试。

Ruby, RubyGems, Rails, and Git

Rails Installer (Windows)

去这里下载Rails安装器。

Rails Installer


我们开始安装开发环境

Install Git

请移步到 github.

Install Ruby

Mac和Linux下请先安装RVM或rbenv,用于Ruby版本管理。

Windows下用Pik。


当你安装完以上步骤的时候,你几乎可以开始我们的旅程了。

不过Mac用户可能需要先安装Xcode developer tools。

如果觉得Xcode太大,也可以只安装Command Line Tools for Xcode.


安装RubyGems

RubyGmes是Ruby的一个软件管理项目,其中包括Rails。

一旦安装了Ruby,或者如果你安装了Rvm,则也已经安装了gem了。

在Mac和Linux下可以输入命令

which gem

测试是否gem安装成功

如果没有,下载RubyGems,然后cd进目录,运行

ruby setup.rb

如果提示没有权限,命令行前加sudo


更新gem

gem update --system 

编辑 .gemrc文件,假如你用的是TextMate的话

mate ~/.gemrc

然后输入以下(可以略过这步, 这步是为了避免安装gem文档)

install: --no-rdoc --no-ri
update:  --no-rdoc --no-ri

安装Rails

安装完gem之后,安装Rails就非常容易了。

gem install rails --version 4.1.1

验证Rails版本

rails --version

如果你用的是Linux,可能还需要安装以下常用的包

$ sudo apt-get install libxslt-dev libxml2-dev libsqlite3-dev # Linux only

或者

$ sudo yum install libxslt-devel libxml2-devel libsqlite3-devel

至此,我们的环境已经设置好了。如果有什么问题,可以先google一下。



+++++++++++++++++++++++++++++++++开始我们的教程++++++++++++++++++++++++++++++++++++++++++++


创建我们的第一个Rails应用

$ mkdir rails_projects
$ cd rails_projects
$ rails new first_app
   create
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app
      create  app/assets/javascripts/application.js
      create  app/assets/stylesheets/application.css
      create  app/controllers/application_controller.rb
      .
      .
      .
      create  test/test_helper.rb
      create  tmp/cache
      create  tmp/cache/assets
      create  vendor/assets/javascripts
      create  vendor/assets/javascripts/.keep
      create  vendor/assets/stylesheets
      create  vendor/assets/stylesheets/.keep
         run  bundle install
.
.
.
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled
gem is installed.

如果停在bundle install那里,或者出错,你可以按Ctrl+C,结束运行。

打开Gemfile, 将最上面一行

source https://rubygems.org

替换为 

source http://ruby.sdutlinux.org/

也可以替换为

source http://ruby.taobao.org/

原因你懂得。

然后

cd rails_project
bundle install

Rails 自动为我们创建了MVC框架,包括测试的框架。

下面我们看看目录结构


File/Directory

Purpose

app/

应用程序核心代码,包括Model,Controller,Views以及Helper放法。

app/assets

应用程序所需文件,如css、js、图片等

bin/

二进制可执行文件

config/

配置文件

db/

数据库文件,包括migration等

doc/

应用程序的文档

lib/

lib/assets

库所需要的文件,如css、js、图片等

log/

日志

public/

从互联网可以访问的文件

bin/rails

生成代码的程序,控制台session,或者启动一个本地服务

test/

程序测试文件目录

tmp/

临时文件

vendor/

第三方代码,如 plugin和 gem

vendor/assets

第三方代码所需文件

README.rdoc

应用程序简介

Rakefile

通过rake命令使用的文件

Gemfile

程序gem依赖配置文件

Gemfile.lock

用来确保所有应用程序使用相同版本的gem

config.ru

 Rack中间件使用的文件

.gitignore

Git忽略的文件配置文件


现在我们可以试着运行我们的程序了

$ rails server
=> Booting WEBrick
=> Rails application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server

 甚至你可以简单的输入 
  

$rails s

假如系统提示缺乏Javascript运行时,最好安装Node.js.


然后我们在浏览器输入

localhost:3000

你就可以在本地访问我们刚刚建成的网站了。


Rails: 从零到部署至服务器_第1张图片


网站建成之后,我们用Git来进行版本控制

Git安装好之后,首先在github.com建立一个账户,然后建立一个repository,first_app

然后通过terminal配置git,现在github.com也提供了GUI版本,你也可以直接通过GUI版本控制。

$git config --global user.name "Your name"
$git config --global user.email [email protected]
#下面的这个只是为了方便
$git config --global alias.co checkout

最后,你可以设置编辑Git commit消息编辑器,取决于你的系统和你所选用的编辑器,你可以选择以下之一进行设置

#ublime Text 2
$git config --global core.editor "subl -w"
#TextMate
$git config --global core.editor "mate  -w"
#gVim
$git config --global core.editor " gvim -f"
#MacVim
$git config --global core.editor "mvim  -f"


初始化我们的Git repository

$git init


.gitignore里配置的是git push等操作时需要忽略的文件


为了安全和方便,我们编辑一下.gitignore文件

$ mate .gitignore


编辑后的.gitignore


# Ignore bundler config.
/.bundle

# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-journal

# Ignore all logfiles and tempfiles.
/log/*.log
/tmp

# Ignore other unneeded files.
database.yml
doc/
*.swp
*~
.project
.DS_Store
.idea
.secret


添加文件和提交

$git add .
$git commit -m "Initialize repository"

你也可以通过git status或者git log查看git信息

现在我们终于可以将代码提交至github了

$ git remote add origin https://github.com/你的用户名/first_app.git
$ git push -u origin master

现在,我们来修改下README.rdoc,

$ git checkout -b modify-README
Switched to a new branch 'modify-README'
$ git branch
master
* modify-README

这里新建了一个版本分支,名为modify-README,然后切换到新的版本

然后我们将README.rdoc重命名为README.md,然后编辑README.md

$git mv README.rdoc README.md
$mate README.md

复制以下内容

# Ruby on Rails Tutorial: first application

This is the first application for the
[*Ruby on Rails Tutorial*](http://railstutorial.org/)
by [rocLv](http://roclv.github.io/).

提交,这里我们将git add . 和git commit -m合并执行

$ git commit -am "Improve the README file"

将modify-README版本合并至master

$ git co master
Switched to branch 'master'
$ git merge modify-README
Updating 34f06b7..2c92bef
Fast forward
README.rdoc     |  243 --------------------------------------------------
README.md       |    5 +
2 files changed, 5 insertions(+), 243 deletions(-)
delete mode 100644 README.rdoc
create mode 100644 README.md 

现在你如果觉得不需要分支modify-README,你可以通过以下命令删除

$git branch -d modify-README

Deleted branch modify-README (was 2c92bef).


使用-D而不是-d则即便我们没有合并分支,我们一样可以删除分支。

通常在我们确实觉得分支被搞乱时执行。


现在我们可以Push我们本地的repository到github了

$git push


下面,也是本文的最后一步,我们将程序部署至Heroku

Heroku使用PosgreSQL作为数据库服务器,所以我们必须包含gem ‘pg’

修改Gemfile

group :production do
  gem 'pg', '0.15.1'
  gem 'rails_12factor', '0.0.2'
end

gem rails_12factor被Heroku用来服务静态资源,如图片和css等

最好在Gemfile文件里申明我们所用的ruby版本

ruby '2.0.0'
#ruby-gemset=railstutorial_rails_4_0

重新运行

$ bundle install --without production
$ git commit -a -m "Update Gemfile.lock for Heroku"

假如部署至Heroku不成功,可以尝试运行一下

$ rake assets:precompile
$ git add .
$ git commit -m "Add precompiled assets for Heroku"

用Heroku Toolbelt安装必要的软件之后,我们就可以开始将程序部署至heroku。

$heroku login
$heroku create
$git push heroku master

部署完毕之后我们可以开始浏览我们的网站了

$ heroku open












你可能感兴趣的:(Ruby,on,rails)