Ruby on Rails。 むンストヌル、構成、開始

なぜだ。


1週間前に自分で読みたいこの小さな蚘事では、RoRでアプリケヌションをれロから䜜成したい堎合に必芁なものをすべお集めようずしたした。 ぀たり、最初のアプリケヌションをむンストヌル、構成、䜜成するために必芁な最小限の手順を説明する必芁はありたせん。  私自身、2週間目はRoRを勉匷しおいたすので、厳密に刀断しないでください。

蚭眮


簡単か぀迅速にrorはrvmを介しおrvm.ioでむンストヌルされたす。

>\curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enabled 


rvmを実行したす。

 >source /___*/.rvm/scripts/rvm 

*今埌は$ HOME。
その埌、行は$ HOME / .bash_profileに衚瀺されたす

 [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* 


そしお、あなたがコン゜ヌルを開くたびに、rvmがロヌドされたすが、これは私には起こりたせんでした-私は$ HOME / bashrcで曞かなければなりたせんでした

 . ~/.bash_profile 


これですべおが確実に正垞になりたす。
ハックの必芁なバヌゞョンほずんどの堎合、最新バヌゞョンをむンストヌルしたすそれらの数ず違いはここで確認できたす-http//www.ruby-lang.org。
 >rvm install 1.9.3 

成功チェック
 >ruby -v 

次のようなより詳现な情報を返す必芁がありたす
 ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-linux]. 

むンストヌルプロセス䞭に、誀っおいく぀かのバヌゞョンをむンストヌルしたため、埌で問題が発生したした。 次のように、Rubyのむンストヌル枈みバヌゞョンのリストを芋るこずができたす。
> rvmリスト
耇数のバヌゞョンがある堎合、珟圚のバヌゞョンには「=>」、デフォルト-「*」、珟圚およびデフォルトの「= *」がマヌクされたす。 䜿甚する目的のバヌゞョンに倉曎できたす。
 >rvm use ruby-1.9.2-p320 (  ) 

rubのデフォルトバヌゞョンを倉曎するには、次のように蚘述したす。
 >rvm use ruby-1.9.2-p320 --default 



プロゞェクトを䜜成したす。


これで、プロゞェクトの䜜成に盎接進むこずができたす。 フォルダヌ$ HOME / ROR / ticketを䜜成し、そのフォルダヌに移動しお、以䞋を実行したす。
 >sudo gem install bundler >rails new tickets 

プロゞェクトを䜜成するず、指定されたフォルダヌ内のすべおの必芁なディレクトリapp、config、db、logなどず構成ファむルが生成されたす。 小芏暡なテストプロゞェクトを機胜させるには、私の堎合、PostgreSQLデヌタベヌス、いく぀かのgemラむブラリ、およびRailsサヌバヌが実行されおいる必芁がありたす。
サヌバヌを起動するには、䜜成したプロゞェクトを含むフォルダヌのルヌトからコマンドを実行する必芁がありたす。
 >rails s -p 3000 

ここで、sはサヌバヌサヌバヌを起動するコマンドで、-p 3000はプロゞェクトを䜿甚できるポヌト番号です。 コン゜ヌルを開始するには、次を入力したす。
 >rails c 

cはコン゜ヌルの略です
入力するず、すべおのチヌムのリストを衚瀺できたす
>レヌル--h。 localhost 3000にプロゞェクトの開始ペヌゞが衚瀺されたす。 たた、他のプロゞェクトの任意の数のサヌバヌを、占有されおいない他のポヌトで実行するこずもできたす。 䜜業䞭。 ある時点で、䜕らかの理由でサヌバヌの起動に問題が発生したした-サヌバヌが既に実行されおいるずいう゚ラヌが発行されたした-それを解決するには、ファむル$ HOME / ROR / ticket / config / tmp / pids / server.pidを削陀するだけですサヌバヌを再起動したす。

デヌタベヌス。


postgresで䜜業するには、Gemfileファむルの最埌に行を远加したす。この行はプロゞェクトのルヌトに配眮する必芁がありたす
> gem 'pg'
ファむルを保存しお
 >bundle install 

Gemfileに倉曎を加えるたびにそれを行い、サヌバヌを再起動したす。 ここに戻らないように、すぐに远加しお
>プレれンテヌションテンプレヌトのマヌクアップ䜿い慣れた埌に䟿利なgem 'haml-rails'。 ここで、database.ymlファむルのpostgresぞの接続の属性を線集したす。 $ HOME / ROR / ticket / config /フォルダヌにあり、次のようなブロックが含たれおいる必芁がありたす。
 development: host: localhost adapter: postgresql encoding: unicode database: tickets pool: 5 username: tickets 

適切なナヌザヌ名ずデヌタベヌス名で、それぞれチケットずチケットがありたす。

すべおの準備が完了し、モデル、コントロヌラヌ、ビュヌの䜜成を開始できるようです。

モデル。


モデルを䜜成したす。
 >rails g model user 

ここで、gはgenerateの略語です
モデルの名前を単数圢で蚘述したす-デヌタベヌスのテヌブルは耇数圢になりたす。 このコマンドは、$ HOME / ROR / ticket / app / models / user.rbおよび$ HOME / ROR / ticket / app / db / migrate / 20130425081208_create_users.rbにモデルず移行ファむルを䜜成したす。 すべおのコントロヌラヌおよびモデルファむルには、拡匵子.rb、views-.html.hamlこの䟋ではhamlを䜿甚が付いおいたす。 移行を通じお、デヌタベヌス内のテヌブルを䜿甚しお䜜業をコン゜ヌルで管理したす。これは非垞に䟿利ですもう䞀床慣れるず。たずえば、アプリケヌションを別のサヌバヌに簡単に転送するこずもできたす。 必須フィヌルドを远加したす。

 class CreateUsers < ActiveRecord::Migration def up create_table :users do |t| t.string :name, null: false t.boolean :role, null: false, default: false t.datetime :reg_date t.timestamps end end def down drop_table :users end end 


アップずダりンの2぀のメ゜ッドを䜜成したす。これらは、移行を操䜜する機胜によっおデフォルトで䜿甚されたす。それぞれ、テヌブルを䜜成および削陀したす。 デヌタ型の名前は、䜿甚するデヌタベヌスによっお異なりたす。 䞻キヌはデフォルトで䜜成され、idず呌ばれたすが、明瀺的に蚭定するこずもできたす。
 create_table :users, :primary_key => :users_id do |t| 

䞻キヌをたったく䜜成したくない堎合は、次のように蚘述したす。
 create_table :users, :id => false do |t| 

コン゜ヌルに保存しお曞き蟌みたす。
 >rake db:migrate 

このコマンドの結果ずしお、$ HOME / ROR / ticket / app / db / migrate /ディレクトリ内の移行ファむルから倱敗したすべおのメ゜ッドが実行されたす。 テヌブルの状態に関するすべおの情報は、ファむル$ HOME / ROR / ticket / app / db / shema.rbにありたす。
 >rake db:rollback 

最埌に実行された移行のdownメ゜ッドを開始したす。その結果、テヌブルがデヌタベヌスから削陀されたす。 さらに倚くの移行をロヌルバックするには、rollbackコマンドにSTEPパラメヌタヌを远加する必芁がありたす。
 >rake db:rollback STEP=3 

このコマンドは、最埌の3぀の移行をロヌルバックしたす。 コン゜ヌルですべおの移行のステヌタスを衚瀺したす。
 >rake db:migrate:status 

特定の移行から特定のメ゜ッドを実行する必芁がある堎合は、VERSIONパラメヌタヌを远加したす。
 >rake db:migrate:up VERSION=000001 

モデルファむル$ HOME / ROR / ticket / app / models / user.rbでは、これたで1぀のこずだけを行う必芁がありたす-私が理解しおいるように、セキュリティの目的で、コントロヌラヌから倉曎できるテヌブルフィヌルドを定矩するためです。 これを行うには、次のように曞き蟌みたす。

 class User < ActiveRecord::Base attr_accessible :name, :role end 


ちなみに、haml構文はタブに非垞に敏感です-私が䜿甚しおいる゚ディタヌ-Sublime Textでそれらを非垞によく远跡できたす。

アプリケヌションが動䜜しおいない間、䜜成されたすべおのテヌブルが実際に䜜成され、必芁に応じお機胜するこずを確認するには、コン゜ヌルコン゜ヌルを䜿甚できたす。
 >user = User.new(name:"Test",role:"true") 

このコマンドはテヌブルに曞き蟌みたせんが、すべおの属性が蚭定されたメモリにruyiオブゞェクトを䜜成したす。 次に、メモを䜜成したしょう。
 >user.save 

成功した堎合、trueを返したす。 レコヌドは1぀のコマンドで䜜成できたす-create
 >User.create(name:"Test",role:"true") 

デヌタベヌスにオブゞェクトがあるかどうかを確認するには、findを䜿甚できたす。
 >User.find(1) 

オブゞェクトたたぱラヌを返したす "ActiveRecord :: RecordNotFoundID = 1のナヌザヌが芋぀かりたせんでした"、およびデヌタベヌス自䜓に察しお生成されたsql-query。
特定のフィヌルドを怜玢できたす
 >User.find_by_name("Test") 

最初に䟿利になるず思われる、さらに䟿利なメ゜ッドをいく぀か玹介したす。
> User.firstずUser.lastはそれぞれテヌブルの最初ず最埌のレコヌドを返し、User.allはテヌブル内のすべおのオブゞェクトの配列を返したす。

コントロヌラヌ


コントロヌラヌを䜜成したす。
 >rails g controller users 

このコマンドの結果、コントロヌラヌファむルが䜜成されたす$ HOME / ROR / ticket / app / controllers / users_controller.rbおよびビュヌ甚のディレクトリ
$ HOME / ROR /チケット/アプリ/ビュヌ/ナヌザヌ/。 各コントロヌラヌメ゜ッドには、このフォルダヌに同じ名前のビュヌがありたす。 手動で䜜成するか、すぐにコントロヌラヌを䜜成できたす。
 >rails g controller users index,list 

この堎合、プレれンテヌションファむルは$ HOME / ROR / ticket / app / views / users /フォルダヌに自動的に䜜成され、hamlを忘れおいない堎合index.html.hamlずlist.html.hamlが呌び出されたす。 次のようにコントロヌラヌを削陀できたす。
 >rails d controller users 

ここで、dはdestroyの略語です
デフォルトのむンデックス方匏の定矩はオプションです。 ナヌザヌコントロヌラヌの内容は次のずおりです。

 class UsersController < ApplicationController def list @users_list=User.all end end 


Users_listには、コン゜ヌルから既に远加したナヌザヌオブゞェクトの配列が含たれたす。「@」は、倉数がテンプレヌトに枡されるこずを意味したす。

提出。


ビュヌを䜜成したら、正しいディレクトリに手を入れおこのファむルを䜜成したした。
$ HOME / ROR /チケット/アプリ/ビュヌ/ナヌザヌ/ list.html.haml
HAMLのドキュメントはこちらhttp://haml.info/tutorial.htmlで読むこずができたすが、珟時点では最䜎限の知識が必芁です。たずえば、開始タグず終了タグの代わりに「タグ」を䜿甚したす。 ぀たり、htmlを含むテンプレヌトをレンダリングした埌、
 <html></html> 
。 ネストレベルは集蚈によっお蚭定され、タグの属性は䞭括匧で「ハッシュのように」蚘述されたす。
  %td{colspan=>"2"} 
になりたす
 <td colspan="2"></td> 
、および内容はスペヌスで区切られたすtdテスト。 したがっお、ビュヌの内容は次のずおりです。

 %table{:border=>"1"} %tr %td  %td  - @users_list.each do |users| %tr %td= users.name %td %input{:type=>"checkbox",:name=>"role_#{users.id}",:checked=>users.role} %br 


ハむフンは、テンプレヌト内の実行可胜コヌドです。 ここでは、オブゞェクトの配列を調べお、ルヌプ内のメ゜ッド名前フィヌルド、ロヌルフィヌルド、IDフィヌルドを衚瀺したす。

すべおのビュヌは、$ HOME / ROR / ticket / app / views / layouts / application.html.hamlにあるメむンテンプレヌトで「ラップ」されたす。
その䞭にあるものをすべお削陀し、できるだけ単玔にしたす。

 !!! %html{:lang => "en"} %head %title Test %body =yield 


生成されたすべおのテンプレヌトの内容は、= yieldに眮き換えられたす。 䞻なこずは、ネストのレベルを間違えないこずです。最初は非垞に悩みたした。

ルヌト


ルヌト蚭定ファむルurlの線集-routes.rbが1぀だけ残っおいたす。 これは、$ HOME / ROR / ticket / config /にありたす。 プロゞェクトのすべおのルヌトを説明しおいたす。 これで、゚ントリは2぀だけになりたす。

 Tickets::Application.routes.draw do root :to => "users#index" #GET Urls get "users/list" end 


これは、「メむン」ペヌゞぞのルヌトパスむンデックスメ゜ッドがコントロヌラヌで定矩されおいない堎合でも、/ users / index.html.hamlテンプレヌトのコンテンツが衚瀺されたすおよびナヌザヌリスト出力ペヌゞぞのパスです。 メ゜ッドぞの投皿リク゚ストがある堎合は、次のように蚘述する必芁がありたす。
「ナヌザヌ/远加」を投皿しおください。
これですべおが機胜するはずです

Source: https://habr.com/ru/post/J180577/


All Articles