<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 1.2 Rails 文件簡介 ## 概要: 本課時介紹 Rails 項目創建后的文件含義,介紹Rails 項目中的三種運行環境, Gemfile 及 Gem,以及 Rake 任務等。 ## 知識點: 1. 文件含義 1. 運行環境說明及配置 1. Gem 和 Gemfile 1. Rake 任務 ## 正文 ### 1.2.1 基礎文件介紹 本節開始前,我們先使用一個命令,創建 Rails 項目。或許你已經知道了,它就是: ~~~ rails new shop ~~~ 提示:如果你已經安裝了其他版本的 Rails,那么該命令使用最新的版本創建項目,如果指定其他版本,可以這樣來寫 ~~~ rails _4.1.5_ new shop ~~~ 如果你想查看已經安裝的 Rails 有哪些版本,可以使用 `gem list | grep rails`。 好了,我們來看一下 new 為我們創建了哪些文件。 #### app 文件夾 我們的業務邏輯文件存放地,在后面的教程里,我們會經常為它增加內容,到時會詳加介紹。 #### config 文件夾 這里存放的是 Rails 的配置文件。首先,打開 envirments 文件夾,我們可以看到三個文件,這分別對應 Rails 的三種運行環境,我們開始時候使用的是 development 環境,運行測試時是 test 環境,當我們把代碼部署到服務器上,正式上線的時候,使用的是 production 環境。 Rails 允許我們分別為三種換進做不同的設置,而設置的內容是一致的。比如,production 中 `config.assets.digest = true`,而開發環境可以設為 `config.assets.digest = false`。 Rails 還為我們提供了 I18n 的管理功能,這里還只有 en.yml 一種語言包,后面的課程里,我們將詳細介紹 I18n 功能,并添加簡體中文和英文語言包。 database.yml 中配置了數據庫信息。Rails 默認使用 sqlite 數據庫作為開發使用。我們也可以更改它,在 new 的時候這樣做:`rails new shop -d mysql|oracle|postgresql|...` routes.rb 是我們的路由文件,一個非常重要的文件,我們下一個章節將從它開始介紹 Rails 的諸多優秀設計。 secrets.yml 中的配置分別對應三種運行環境,它是用來加密我們的 session 的。 #### db 文件夾 如果你使用的是 sqlite 數據庫,那么你會發現它存放在這里。sqlite 是一種小型的便于開發環境使用的數據庫。在生產環境(production)的數據庫,比如 mysql,postgres 等數據庫文件,是不需要放到這里的。 migrate 文件夾中,存放的是我們的數據庫遷移文件,下一章我們會經常看到它。 這里還有一個 seed.rb 文件,可以用它來為項目創建一些初始數據。 #### lib 文件夾 lib,在我們開發 Rails 項目是,會經常的擴展一些功能,而這些功能具有復用的特點時,可以把代碼放到 lib 中。 這里我想到了 Rails 的一條哲理:Convention Over Configuration,約定優于配置。我們擴展的功能文件,可以放到任何可被夾在的目錄下,但是,那違背了 Rails 的這條哲理。 #### log 文件夾 這里存放的是日志文件,我們可以看到它對應了上面的三種運行環境,Rails 把每一種運行環境的 log,都單獨的存放。 #### public 文件夾 這里存放的是靜態文件,比如圖片,html,還有編譯好的 js,css 等。 #### test 這里是測試文件,我們編寫項目的同時,也會帶領大家編寫對應的測試代碼。所以我們后面會經常的用到它。 不過,我們使用 Rspec 進行測試,測試文件放到 spec 文件夾里。 #### vendor 文件夾 這是第三方代碼庫,比如我們 clone 下來的 gem,下載的 js 庫等。 #### Gemfile 文件 在之前的講解中,我們經常提到 Gem。 Gem,是 Ruby 編寫的代碼庫的發布包。一個 Gem 中還可以包含了其他一些 Gem,比如,Rails 就是個 Gem,其中還包含了 activerecord,activesupport 這些 Gem。可以說,Rails 就是一大堆 Gem 的集合。 Rails 是通過 Gemfile 文件,來管理眾多 Gem 的。 打開 Gemfile,可以看到我們的項目使用了 Rails 4.2.0 這個版本的 Gem,使用了 sqlite3 這個數據庫,以及其他的一些 Gem,這都是 Rails 4.2.0 默認使用的。 我們是可以修改這個文件,每次修改之后,我們需要 `bundle install`,它會把 Gem 的版本號和互相間的依賴關系重新的配置一遍,并且會自動的更新 Gemfile.lock 這個文件,然后安裝 Gefile.lock 中聲明的 Gem。 所以,即便我們使用不同的開發機器,只要 Gemfile.lock 相同,我們就會安裝相同的 Gem,以保持每個開發機器使用相同的開發和運行環境。 #### Rakefile Rails 為我們提供了很多便捷的 rake 任務,我們通過 `rake -T` 可以看到,如果加上 `rake -T -D`,可以看到詳細的說明。當然,我們頁可以自己編寫 rake,把它們放到 lib/tasks/里面,擴展名是 .rake。 #### README.md 文件 為你的項目寫一份 Readme 是很有幫助的,你有注意到.md 這個格式么?它是 markdown 格式,目前最流行的書寫格式,本書也是用 markdown 寫成的。 [英文](http://commonmark.org/) 介紹在這里,不過我更愿意看[這里](http://markdown.tw/)。 我創建的代碼,可以在這里找到:[https://github.com/liwei78/rails-practice-code/tree/master/chapter_1/shop](https://github.com/liwei78/rails-practice-code/tree/master/chapter_1/shop) ### 1.2.2 安裝 Gem 安裝 Gem 時,Ruby(注意,是 Ruby)使用的是 bundler 這個工具。它的官網在這里:[http://bundler.io/](http://bundler.io/) 在我們配置 Gemfile 時,經常遇到一些配置語法,這里把常見的介紹下: ~~~ source 'https://rubygems.org' # source 'http://ruby.taobao.org' # 我們也可以使用 taobao 這個安裝源,不過一些 Gem 不存在時,還是要使用 rubygems 官方源的。 ~~~ ~~~ gem 'xxx', '~>2.0.3' # ~> 這個寫法表示當前版本大于等于2.0.3,小于2.1版本 gem 'xxx', '~>2.1' # ~> 這個寫法表示當前版本大于等于2.1,小于3.0版本 ~~~ ~~~ gem 'my_gem', '1.0', :source => 'https://gems.example.com' # 我們可以指定自己的 source 源 ~~~ ~~~ gem 'nokogiri', :git => 'https://github.com/tenderlove/nokogiri.git', :branch => '1.4' # 也可以指定 Github 地址和分支 ~~~ ~~~ gem 'extracted_library', :path => './vendor/extracted_library' # 我們可以從 vendor 文件夾中安裝一個 Gem。 ~~~ ~~~ # 我們可以為運行環境指定一個 group,比如,在 development 和 production 環境中,將不加載 rspec 這個 Gem,它只需要在 test 環境下工作。 group :test do gem 'rspec' end ~~~ 翻看 [http://bundler.io/gemfile.html](http://bundler.io/gemfile.html),查看更多 Gemfile 的介紹。 ### 1.2.3 運行 Rake 任務 Rake 是一個 Ruby 實現的類似 make 的工具程序。任務(Tasks)是由 Ruby 代碼編寫的。這么講有些抽象,我們看看 Rails 為我們提供的幾個 Rake 任務: ~~~ rake db:create # 創建數據庫 rake db:migrate # 更新數據庫,更新的文件來自 db/migrate/ rake db:seed # 執行 seed.rb 文件的內容,通常是創建一個默認的數據。 rake db:drop # 刪除數據庫 ~~~ 上面這些命令,是在 development 環境下執行的,如果要在 production 下執行呢? ~~~ RAILS_ENV=production rake db:migrate ~~~ 另一個常用的,是 ~~~ rake routes ~~~ 它會列出我們所有定義的路由(routes)列表。 你也可以自己編寫一個 Rake 任務,放到 lib/tasks/中,擴展名為 .rake。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看