Ubuntu下搭建Ruby on rails 环境

来源:互联网 发布:nginx 多servername 编辑:程序博客网 时间:2024/05/13 18:56

打算学习一门新技术时,首先需要去了解这项技术的一些大概情况,技术优势在于什么?为什么要选择他,跟同类技术比较有什么优势?

之所以学习rails,主要是因为近一年来一直在做网站架设方面的事情,所用的web架构也一直是用于搭建大型网站的SSH,开发效率不过,对于短期项目小型项目来说不是很合适,所以决定学一门能够提高开发效率的计算。最开始选择的范围包括LAMP、Django和RubyOnRails,但是PHP太常见,而且不是趋势所向,而Django则在ORM表现不佳,而且Python并不是一种面向对象的语言。所以,综合考虑转变的难易程度等因素,最终决定学习rails。

在解决上面的问题后,基本上也就打定主义要学习这门技术了。接下来的第一个工作就是开发环境的搭建:

环境选择

按照网上的说法,尽量在Linux或者MaxOS下进行开发,摒弃windows。具体原因我也不清楚,但也觉得很自然,那就这样吧,我的Linux是Ubuntu 12.04 LTS Server。                            

配置 Ubuntu Server 系统

如果你是国内服务器,推荐修改网易的源

输入 sudo vi /etc/apt/sources.list 将里面的内容替换成:

deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ precise main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse

注:源也可以不更换,这样更换的目的只是理论上下载速度更快。

然后更新一下:

$ sudo apt-get update

安装必要的三方库

$ sudo apt-get install -y wget vim build-essential openssl libreadline6 libreadline6-dev libmysqlclient-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libxml2-dev libxslt-dev libcurl4-openssl-dev autoconf automake libtool imagemagick libmagickwand-dev libpcre3-dev nodejs libpq-dev

安装 Ruby, Rails 及相关

安装 RVM

$ curl -L https://get.rvm.io | bash -s stable$ echo'[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"' >>~/.bashrc$ source ~/.bashrc$ source /etc/profile.d/rvm.sh$ rvm -v

安装 Ruby

如果你是国内服务器,推荐将 RVM 的安装源替换成 Taobao 的镜像服务器,这样安装能更快!

$ sed -i -e 's/ftp\.ruby-lang\.org\/pub\/ruby/ruby\.taobao\.org\/mirrors\/ruby/g' ~/.rvm/config/db

如果上面命令报错,可以尝试以下命令

$ sed -i 's!cache.ruby-lang.org/pub/ruby!ruby.taobao.org/mirrors/ruby!'$rvm_path/config/db

用 RVM 安装 Ruby:

$ rvm pkg install readline openssl$ rvm install 2.0.0$ rvm use 2.0.0 --default$ ruby -vruby 2.0.0p247

国内服务器推荐替换 RubyGems 的到淘宝镜像:

$ gem sources --remove https://rubygems.org/$ gem sources -a http://ruby.taobao.org/$ gem sources -l
*** CURRENT SOURCES ***http://ruby.taobao.org
注:镜像可以不做更换,只是国内源理论上更快

安装 Rails

$ gem install rails$ rails -vRails 4.0.0

注:在安装完后可能PATH并没有被更新,所以一定要echo $PATH看一下,如果有改,再打开一个bash,输入echo $PATH,看是否更改,如果没有,需要进行PATH的更改,具体方式很多,网上查就行。

在rails -v可能还会出现一个问题:


root@localhost:/home/baojinhong# rails -v/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/dependency.rb:298:in `to_specs': Could not find 'railties' (>= 0) among 14 total gem(s) (Gem::LoadError)from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/dependency.rb:309:in `to_spec'from /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:53:in `gem'from /usr/local/rvm/gems/ruby-2.1.1/bin/rails:22:in `<main>'from /usr/local/rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `eval'from /usr/local/rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `<main>'


这个问题在重新装一遍就好了,不知道为啥


启动rails测试安装

開始建立第一個Rails應用程式

首先請打開一個命令列視窗(Terminal),然後找個目錄適合放你的Rails專案,就說是projects好了:

$ mkdir projects$ cd projects

接著,輸入以下指令就會建立一個叫做demoRails專案:

$ rails new demo

如果出現建立出來的目錄不是demo而是new,表示你的Rails版本是舊版的,請輸入rails -v檢查Rails的版本必須是3.0以上。不是的話,請回上一章末執行gem install rails安裝Rails 3

你會看到以下訊息顯示出總共新增了哪些檔案:

  create    create  README  create  Rakefile  create  config.ru  create  .gitignore  create  Gemfile  create  app  ...(略)...  create  vendor/plugins  create  vendor/plugins/.gitkeep

這樣就建立出demo目錄,讓我們繼續:

$ cd demo

這個目錄下包含了一個Rails專案基本會用到的目錄結構和檔案,讓我們簡單走訪一下,輸入ls(Windows讀者請輸入dir)顯示出此目錄下的檔案:

檔案/目錄用途Gemfile設定Rails應用程式會使用哪些Gems套件README專案說明:你可以用來告訴其他人你的應用程式是做什麼用的,如何使用等等。Rakefile用來載入可以被命令列執行的一些Rake任務app/放Controllers、Models和Views檔案,接下來的內容主要都在這個目錄。config/應用程式設定檔、路由規則、資料庫設定等等config.ru用來啟動應用程式的Rack伺服器設定檔db/資料庫的結構綱要doc/用來放你的文件lib/放一些自定的Module和類別檔案log/應用程式的Log記錄檔public/唯一可以在網路上看到的目錄,這是你的圖檔、JavaScript、CSS和其他靜態檔案擺放的地方script/放rails這個指令和放其他的script指令test/單元測試、fixtures及整合測試等程式tmp/暫時性的檔案vendor/用來放第三方程式碼外掛的目錄

啟動伺服器

Rails使用了一套叫做Bundler的工具可以幫助我們檢查及安裝這個Rails應用程式所有依存的套件,請輸入:

$ bundle install

可以只輸入bundle就是bundle install了。 每次有修改Gemfile這個檔案,都需要重新執行bundle

第一次启动时,这里需要等待安装一些插件

會出現

Fetching source index for http://rubygems.org/...Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

在開發用的電腦上,我們不需要安裝如ApacheIIS的網站伺服器。Ruby本身就有提供了HTTP伺服器可以執行Rails,要啟動它,我們另開啟一個指令視窗,cd進到剛剛建立的Rails專案目錄然後輸入rails server

$ cd projects/demo$ rails server 

就會出現以下訊息:

=> Booting WEBrick=> Rails 3.2.8 application starting in development on http://0.0.0.0:3000=> Call with -d to detach=> Ctrl-C to shutdown server[2012-09-30 04:23:28] INFO  WEBrick 1.3.1[2012-09-30 04:23:28] INFO  ruby 1.9.3 (2012-04-20) [x86_64-darwin12.1.0][2012-09-30 04:23:28] INFO  WEBrick::HTTPServer#start: pid=18615 port=3000

rails server 可以簡寫為 rails s

使用Ubuntu作業系統的朋友,如果啟動伺服器時出現Could not find a JavaScript runtime的錯誤,請編輯Gemfile這個檔案加上一行gem 'therubyracer',輸入bundle install安裝這個套件,然後再啟動一次rails server即可。這是因為在Ubuntu作業系統上預設沒有任何JavaScript直譯器可以給Rails使用。你可以裝Node.js或是安裝therubyracer這個Ruby套件來獲得JavaScript直譯器。

接著打開你的瀏覽器前往http://localhost:3000,我們可以看到Rails的預設首頁。這個Welcome Aboard的畫面可以確認設定無誤,點選About your application’s environment超連結可以看到更多環境資訊。

要中斷伺服器的話,請按Ctrl+C(若不靈光請改試Ctrl+Z)。在development開發模式的話,除了修改configvender目錄下的檔案需要重新啟動之外,其他修改通常不需要重新啟動,修改的檔案會自動重新載入。如果是 production正式上線模式的話,修改任何檔案都必須重新啟動伺服器才會有效果。


0 0
原创粉丝点击