首页 > 代码库 > Rails: 从零到部署至服务器
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<pre name="code" class="html">=> 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
你就可以在本地访问我们刚刚建成的网站了。
网站建成之后,我们用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 you.email@example.com #下面的这个只是为了方便 $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 init
为了安全和方便,我们编辑一下.gitignore文件
$ mate .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
<p class="p1">Deleted branch modify-README (was 2c92bef).</p>
使用-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