<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Rails組成與項目結構 Ruby on Rails框架是基于REST和MVC架構思想來設計的,那么讓我們先看看Rails的組成結構,了解它是怎么實現這些思想的。 ### Rails組成 當你用gem install rails命令安裝Rails,你會發現它安裝了很多的組件: 可以用gem list查看,這里把Rails核心組件列出來,其他的依賴就不說了。 ~~~ actionmailer actionpack actionview activemodel activerecord activeresource activesupport rails railties ~~~ 1. actionmailer 專門提供email發送服務的一個框架。 1. actionpack 包含了action dispatch ,action controller和 action view,用于Rails中控制器、路由和view層的交互。 1. actionview Rails4 中,從actionpack中獨立出來,所以上面的actionpack在Rails4中只剩下action dispatch和action controller了。 1. activemodel 獨立于activerecord,處理model層的數據驗證等邏輯,非數據存儲,可以算是ORM的一個前端,你可以用它實現自己的ORM,比如開源的一個mongodb orm:mongoid 1. activerecord 實現了零配置將Ruby類映射到數據庫,我們用它來和數據庫進行交互,它依賴于active model。 1. activeresource Rails4已經移除,Rails3中,用于消費REST api。 1. activesupport active support 中包含了一組工具類,以及對Ruby標準庫的各種擴展,主要是為了給rails提供支持。 rails的其他組件都依賴于active support組件。 1. rails & railties 上面的activerecord,actionpack,activesupport,activemodel,actionview,actionmailer都是gem形式存在,而rails是包含了它們這些組件的一個總的gem。 railties是用于粘合這些組件相互協同工作的組件,并且它還提供了生成器和rails的各種命令。 ### 約定大于配置 Rails的一個先進理念,就是約定大于配置。也是Rails的核心原則,也是Raila開發效率提升的關鍵。 在Rails實現這個理念的若干年后,其他Web開發框架才反應過來,紛紛表示自己實現了約定大于配置。 那么約定大于配置在Rails中表現在哪? - 數據庫表名和model名單復數約定 比如: model是User, 那么Rails就會去找users表。 model是單數,數據庫表是復數。 - 類名、模塊名和文件查找 比如: 類名是User, 那么它一定對應文件名是user.rb。模塊名是 Admin::User, 那么它一定對應于admin/user.rb文件。 通過這些約定,我們就省了不少配置,幾乎達到了零配置。用JavaEE框架做過項目的朋友應該可以明白配置的痛苦。 - controller會默認渲染對應名字的view 比如: controllers/users_controller 會自動的渲染 views/users.html.erb 這樣的view文件。 - RESTful: controller里面的action 默認響應HTTP 方法 比如: - GET /users 會自動響應 index action - PUT|PATCH /users/1 會自動響應 update action - POST /users 會自動響應 create action - DELETE /users/1 會自動響應 delete action - Migration 數據遷移腳本 比如:你創建一個數據遷移腳本 xxx_create_users.rb ,rails會根據這個名字幫你生成腳本文件。 稍后我們會見識到。 理解Rails的約定大于配置原則,對你Rails的學習有很大幫助。 ### Rails項目結構 我們使用rails new 命令創建一個新項目: ~~~ rails new reading ~~~ 你也可以用指定版本號來創建一個項目: ~~~ rails _3.2.18_ new reading ~~~ *當然,我們安裝好Chef Server自動就已經有這個項目了。* 一個默認的Rails(3.2.18)項目的目錄結構如下: ~~~ app/ |_ assets/ |_ controllers/ |_ helpers/ |_ mailers/ |_ models/ |_ views/ config/ |_ application.rb |_ database.yml |_ environments/ |_ locales/ |_ boot.rb |_ environment.rb |_ initializers/ |_ routes.rb config.ru db/ |_ seeds.rb doc/ |_ README_FOR_APP Gemfile Gemfile.lock .gitignore lib/ |_ assets/ |_ tasks/ log/ public/ |_ 404.html |_ 422.html |_ 500.html |_ robots.txt Rakefile README.rdoc script/ |_ rails test/ |_ fixtures/ |_ functional/ |_ integration/ |_ performance/ |_ test_helper.rb |_ unit/ tmp/ |_ cache vendor/ |_ assets/ |_ plugins/ ~~~ Rails 4.1 的項目結構有所變化: script目錄變成了bin,config里多了secret.yml ~~~ app/ |_ assets/ |_ controllers/ |_ helpers/ |_ mailers/ |_ models/ |_ views/ bin/ |_ bundle |_ rails |_ rake config/ |_ application.rb |_ database.yml |_ environments/ |_ locales/ |_ secrets.yml |_ boot.rb |_ environment.rb |_ initializers/ |_ routes.rb config.ru db/ |_ seeds.rb doc/ |_ README_FOR_APP Gemfile Gemfile.lock .gitignore lib/ |_ assets/ |_ tasks/ log/ public/ |_ 404.html |_ 422.html |_ 500.html |_ robots.txt Rakefile README.rdoc test/ |_ fixtures/ |_ functional/ |_ integration/ |_ performance/ |_ test_helper.rb |_ unit/ tmp/ |_ cache vendor/ |_ assets/ |_ plugins/ ~~~ 雖然Rails3和Rails4的目錄結構有一點變化,但總的思想是不變的。 Chef11 的server webui目前是Rails3寫的,所以我們看Rails3就夠用了。 ### app目錄 - app目錄的作用是組織REST架構和MVC架構的相關代碼。也是Rails項目啟動文件默認加載的目錄。 - assets 目錄:包含了前端的資源,javascript、css、images。 - controllers目錄:包含了所有的controller,在Rails中一般controller就是指REST架構中的資源。controller里實現了各種action,用于響應web請求。 也是MVC架構中的C層。 - helpers目錄: 用于存放一些helper方法,這些helper方法一般用在view層,用于組織一些用于view的邏輯代碼。 - mailers目錄: 用于放和郵件發送相關的代碼。 - models目錄: 用于放各種數據庫映射的model,一些數據操作以及業務邏輯代碼,都應該放在這里。 MVC架構中的M層。 - views目錄: 用于放views層的模板,經過controller渲染這些模板,最后生成可供用戶訪問的頁面。MVC架構中的V層。 ### bin目錄 (或Rails3 中的script目錄) Rails的命令,以及bundle、rake命令。 ### config目錄 這里配置Rails項目的運行規則。 - application.rb 文件,用于配置你的Rails項目運行的各種參照、狀態。 - database.yml 文件用于配置你的數據庫連接驅動及信息。 - boot.rb 用于load bunler環境,加載依賴gem - environment.rb 初始化Rails應用 environments目錄,包含了Rails預設的三種狀態,development、production、test。 這三種狀態,對應不同的環境,development為開發環境,production為生產環境,test為測試環境。 我們開發的時候一般用development環境,部署到線下,需要用production環境, 做單元測試的時候,就是用測試環境。 這三種環境對應的rails應用的配置有所不同。 - locales 這個目錄包含用于國際化的yml配置文件。 - secrets.yml 這個文件默認存有應用程序的 secret_key_base,也可以用來存放其它 secrets,比如存放外部 API 需要用的 access keys。 - initializers 目錄,這個目錄存放著一些rails的啟動文件,這些文件是rails默認對外開放,意味著你可以在里面添加一些東西,來改變rails的啟動狀態。你還可以在這個文件夾下面放置你自己的啟動文件。 - routes.rb, 這個文件是Rails中最重要的一個文件之一,因為這個文件中指定了你項目所有的路由配置,也就是說,所有的web請求收發規則,都由這里指定。 config.ru 文件, rackup啟動所需要的一個配置文件 ### db 目錄 這個目錄存放的東西,主要是數據庫相關。 seeds.rb 用于初始化應用數據。 將來用于創建數據庫表結構的migration腳本文件,也會放到這個目錄下面。 以及創建完數據庫表生成的schema文件。 ### Gemfile 這個是bundler工具提供的,管理項目中用到的gem依賴。Rails啟動應用會先從這個文件中加載。 bundle install 命令,幫助你安裝所有的gem依賴。 然后會生成一個Gemfile.lock文件。 ### lib目錄 用于存放第三方庫。 tasks目錄,用于存放rake 任務。 assets目錄,用于存放我們自己代碼庫或者共用代碼的靜態資源。 ### public 這個目錄用于web服務器,而非應用服務器,這個目錄作為web服務器的根目錄。 ### 其他目錄 doc目錄,用于存放項目的文檔。 vendor目錄,用于存放第三方資源,assets和plugins。 log目錄, 日志輸出的目錄。 tmp 目錄,用來存放暫時用途的文件,比如文件上傳的臨時文件等。 .gitignore 此文件用于配置不想或不能加入到git版本控制系統中的文件,比如database.yml , secrets.yml文件等。
                  <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>

                              哎呀哎呀视频在线观看