[英]Ruby on Rails or a PHP framework
我是一個有能力的程序員,並且我以謀生為目的編寫軟件。 我正在承擔一個新項目,以建立一個網站,該網站具有許多在數據庫和某些多媒體上執行CRUD操作的表格。 我對PHP和Python非常熟悉,並在其中編寫了一些網站。 我已經編寫了一些rake任務和一些在生產環境中運行的ruby腳本,但是我從未用ruby編寫任何網站。 我正在考慮使用Rails,但是我有以下問題。 很高興知道任何/所有這些答案:
按順序回答您的問題:
該項目應在一個月內完成,並且對時間非常敏感。 1個月足夠學習RoR並建立網站嗎?
鑒於您所描述的經驗,我想一個月學習和構建一個簡單的應用程序(尤其是基於CRUD的應用程序)就足夠了。 如果存在很大的復雜性,我將不願意學習一種新技術並在一個月內交付一個復雜的站點。
編寫直接SQL查詢是我的強項之一,我想使用它。 我聽說如果直接編寫SQL查詢,那么使用RoR會很痛苦。 這是真的? 或者我可以說執行查詢,將結果(作為列表或字典)給我,然后告訴您如何呈現它們?
Rails的方法是使用它為您提供的ActiveRecord對象映射(並且大多數情況下都運行良好),如果您要這樣做,編寫直接SQL也非常容易
ModelName.find_by_sql('your query')
你是怎么做到的
我聽說RoR確實加入了內存,並且沒有使用數據庫提供的功能。 它是否正確?
ActiveRecord對您有很多幫助,但是無論性能如何,如上所述,您都可以編寫自己的SQL以利用數據庫的優勢。
我需要創建一個顯示很多圖像,視頻和Java小程序的網站。 RoR會阻礙我這樣做的能力嗎?
我不明白為什么要這樣。 有很多寶石和插件可以幫助您實現此類功能,因此很可能已經為您編寫了許多代碼。
我可以使用PHP框架。 這是一個壞主意嗎? 如果不是,那么就編程方便性而言,哪個PHP框架最接近Rails。
我會讓PHP專家回答這一點。
如果它對時間敏感,請堅持使用您所知道的。.也就是說,Rails有很多插件可以處理諸如圖像上傳之類的事情,這可以節省您很多時間。 Rails具有“腳手架生成器”,可在一個命令中創建基本的CRUD應用程序:
./script/generate scaffold title:text description:text when:datetime
..將生成控制器/視圖以創建/編輯/刪除項目。 然后,您可以輕松地在其周圍包裝漂亮的HTML,添加身份驗證(通過restful_authentication ),然后可能在幾個小時內就完成了應用程序。
在極少數情況下,您需要使用ActiveRecord編寫SQL,但是可以。 RoR仍然是Ruby代碼,因此,如果您確實需要編寫原始SQL,則始終可以使用MySQL庫並取消ActiveRecord(但是,再次肯定,您不必這樣做)
沒有理由說ActiveRecord無法通過SQL查詢執行JOIN, ActiveRecord :: Associations :: ClassMethods提到通過JOIN執行的關聯。
此外,即使它確實通過內存進行JOIN,但無論Rails已經存在了很長時間,它都可以很好地工作。
不。它們全都是HTML的一部分,Rails可以像其他任何框架一樣輕松地輸出它們。
絕對。 如果您不使用Rails,請使用PHP框架!
我建議不要選擇基於“與Rails的距離”的框架。 PHP不是Ruby。 試圖“端口”(的方式),以不同語言的框架很少奏效,以及編寫該語言的框架。
當我評論Chuck的答案時,“ CodeIgniter和Zend是很好的PHP Web框架。CakePHP是很好的Ruby on Rails模仿”。
我發現CodeIgniter感覺更像PHP(以一種很好的方式),它的文檔也是我使用過的任何項目的最愛!
Zend框架是非常模塊化的,您可以將Zend的一部分放到現有的PHP應用程序中,或使用它的MVC路由系統。
CakePHP似乎正在嘗試使PHP像Ruby那樣運行,而不是構建一個非常適合PHP的框架。
綜上所述,您使用Ruby on Rails的原因是社區(以及圍繞它而來的所有插件和東西)。
例如, 回形針插件使圖像上載表單(以及縮略圖)變得非常容易。 要使用它,您要添加(到模型中):
has_attached_file :photo, :styles => {:thumb=> "100x100#", :small => "150x150>" }
然后在您想要的上傳表單所在的視圖中,添加:
<% form_for :user, :html => { :multipart => true } do |f| %>
<%= f.file_field :photo%>
<% end %>
而已。
我建議花一天的時間在Rails中簡化一些事情。 有無數很棒的教程( Railscasts是一個很好的,隨機的例子),並且有很多書籍。 看看是否喜歡它,如果不嘗試CodeIgniter,Zend或CakePHP(或Django,Merb或...。。。。
擁有一些Python經驗之后,您可以看看Django嗎?
Rails非常適合CRUD。
1-如果您已經熟悉Ruby和MVC,那么一個月就可以了。 如果沒有的話,還有很多東西要學。
2-Rails可以讓您執行SQL查詢,但實際上是為了利用ActiveRecord而設置的。
3-Rails旨在在數據庫類型之間切換,因此ActiveRecord會自己做很多事情。 查看ActiveRecord關聯以獲取更多信息。
4-從未嘗試過Java applet,但是其余的都可以正常工作。
5-如果您對PHP框架比較滿意,那么這並不是一個壞主意。 甚至有少數嘗試復制許多Rails功能,例如CodeIgniter。
查看RailsGuides ,以獲取有關所有這些的更好的主意。
我可以使用PHP框架。 這是一個壞主意嗎? 如果不是,那么就編程方便性而言,哪個PHP框架最接近Rails。
我猜CakePHP對於PHP框架來說接近RoR。
我自己沒有嘗試過Rails,但是想知道這是否方便。 據Ive所讀(就像花了2年時間讓Rails做某事的人一樣),當您需要做更復雜的事情時,您顯然必須與框架打架。
還有其他用於Ruby,PHP和Python的框架。 我建議您在決定之前先四處看看。
如果您想用PHP編寫代碼,則可以嘗試使用Zend Framework的Symfony。
該項目應在一個月內完成,並且對時間非常敏感。 1個月足夠學習RoR並建立網站嗎?
可能是,但也可能使您不必要地感到困難。 我通常會等待時間表輕松的項目來嘗試和學習新技術。 如果時間很緊迫,請用盡自己喜歡的語言並完成。
編寫直接SQL查詢是我的強項之一,我想使用它。 我聽說如果直接編寫SQL查詢,那么使用RoR會很痛苦。 這是真的? 或者我可以說執行查詢,將結果(作為列表或字典)給我,然后告訴您如何呈現它們?
我不是Rails開發人員,但我知道它使用ActiveRecord。 但是,我敢肯定,還有一種方法可以使它像大多數ORM一樣執行原始查詢。 但是,在那里,您會遇到框架要執行的操作的粗俗之處,並且可能會遇到問題。
我聽說RoR確實加入了內存,並且沒有使用數據庫提供的功能。 它是否正確?
任何為您抽象化的東西,尤其是數據庫關系,都將遠非高效。 通常不必事先擔心它,一旦您的應用程序完成,通常的做法是識別任何特定的慢查詢並在必要時手動重做。
我需要創建一個顯示很多圖像,視頻和Java小程序的網站。 RoR會阻礙我這樣做的能力嗎?
我不知道為什么會這樣。
我可以使用PHP框架。 這是一個壞主意嗎? 如果不是,那么就編程方便性而言,哪個PHP框架最接近Rails。
CakePHP是迄今為止最接近RoR的框架。 它借鑒了很多想法。 過去,我已經成功地使用了它。 CodeIgniter雖然與Rails不相關,但如果您想要輕量級的東西而又不會強迫您做任何事情,那么它也很棒。
http://www.doctrine-project.org/
我在ORM學說方面取得了巨大的成功:如果您正在編寫面向對象的php,那么這將為您完成object-> database記錄映射。 AFAIK這是django / rails框架的優點之一。
因此,這鏈接了oop /數據庫功能,如下所示:
$foo = new User(); // makes a new 'transitory' user object
$foo->name = 'bob'; // works like you'd expect
$foo->save(); // but this pushes it into the database.
//(There's a 'name' column in the 'User' table already: set up when Doctrine initializes).
&如果您想要一個框架,那么它現在就是symfony的一部分。
擁有一個真正的項目來學習一種新技術或新方法非常有動力,但是可能會承擔太多的責任。 它所花費的時間將比您所知道的技術要長5倍。 沒關系-學習和結果可能值得。 但這聽起來不適合這里。
Rails是一個很好的框架,但是要學習該框架並更加熟悉Ruby特定的構造,可能需要一個月的期限才能同時完成。
要進入Web應用程序框架,如果您已經熟悉PHP,我建議您使用PHP框架。 雖然不是端口,但CakePHP與Rails非常相似。 它以Rails建模,是我最喜歡的PHP框架。 symfony是一個可靠的框架,但是如果您正在尋找更多的Rails風格,我建議您嘗試CakePHP。
如果您還不習慣使用Rails或類似工具,我建議您使用Zend Framework。 它是迄今為止可用於PHP的最全面的Web應用程序框架。
所有這些框架都將使您能夠完成您提到的所有事情。 與使用插件擴展的網站綜合操作系統相比,將它們視為一組選定的構建基塊可能更容易。 這將更類似於像ExpressionEngine這樣的CMS。 您可以使用這些框架做任何事情,它們只是您可以借鑒的代碼庫,從而使開發Web應用程序變得不那么繁瑣。
Akelos框架是一個PHP框架,據稱是Rails的移植版,因此您可能對此也很感興趣。
至於編寫SQL查詢,可以使用任何PHP框架,但是這些框架背后的思想是約定而不是配置。 每個人都有其自己的ORM方案,以使SQL查詢脫離開發人員。 盡管這可能是由於許多Web開發人員(至少以我的經驗)對SQL感到恐懼,但作為一個也喜歡編寫SQL的人,我確實感謝ORM框架可以節省大量時間。 同樣,在開發應用程序時,幾乎是標准的慣例,以描述ORM的性能並尋找需要改進的地方。 快速原型制作是Web應用程序框架的重要組成部分,因此這樣的工具實際上可能對您構成障礙。 就像其他人說的那樣,如果您只是圍繞它們的設施工作,那么使用這些框架之一可能最終毫無意義。
如果您決定不使用其中之一,PHP會提供許多成熟的項目來幫助您構建應用程序,但是要找到這些項目並學習如何實現它們,可能比學習框架要花費更長的時間。
IMO一個月的學習和發布工作非常緊張(我假設您還不是全職的),並且如果您也正在學習,則不會是全職的。 當您更深入時,您會知道情況如何。
大約一個月前,我在RoR和MVC之間面臨着同樣的困境。 幾個星期后(晚上學習),我對RoR框架有了足夠的了解,但是紅寶石語言對我來說還是很新的,客戶想要交付,而我仍處於“游樂場/沙盒”階段
因此,因為我非常了解c#和.net框架,並且可以快速找到自MVC開放以來的資源,所以在兩周之內就已經向客戶端交付了一些東西。
因此,以我的經驗,學習RoR給它一個星期。 如果您發現要花費超過40個小時才能使用實際的應用程序,那么請堅持使用PHP並在有更多時間和更少時間限制的情況下執行RoR。
不管怎樣,好運!
如果您對Model View Controller的結構感到滿意,那么Ruby on Rails並不是很難學習。 我本人是從PHP的Zend Framework遷移到Ruby on Rails的,並真的感到寬慰。 我喜歡Rails使用的約定之上的整個配置思想。 它使您的應用程序(以及所有將來的應用程序)保持良好的結構,在我看來,這非常重要且節省時間。
目前,我已經在Rails中使用Ruby編程大約6-7個月了,我真的很喜歡它。 干凈的代碼,非常快速的開發,這真是不可思議。 尤其是在生成器文件和數據庫遷移中。
至於RoR在編寫原始查詢時的痛苦,我不確定,我什至不必編寫它們,但是您肯定可以使用一種簡單的方法。 那不應該是問題。
一旦開始使用Ruby on Rails開發Web應用程序,我就不想回到PHP。 純粹是因為我非常喜歡Rails的工作方式,約定,快速開發,干凈的代碼,一致的結構等,但是這些天來,我仍然時不時地受到客戶的要求,用PHP開發Web應用程序。 但是在我看來,如果我回到Zend Framework,我可能會感到非常壓力,因為我發現它效率極低。 (我不確定這可能是我自己的錯,但與Rails相比,在我看來)。 我發現了PHP框架“ CakePHP”。 據我所知,這個框架最接近Rails,目前我使用它來開發PHP應用程序。 它非常簡單,效果很好。 在他們的網站上也有一個非常好的東西,叫做“ cookbook”,它可以幫助您快速啟動和運行。 因此,如果您選擇一個PHP框架,我個人會選擇CakePHP,因為它與Rails最接近。
我自己對Rails有點惱火的是,它需要安裝特定版本的Rails,並且該版本必須與特定版本的Ruby兼容。 您需要掌握Gems,插件(老實說,這並不難理解)。 但是隨着部署,如果您正在運行Apache 2+,那么您需要“乘客”。 另外,為了安全起見,您將需要凍結寶石和類似的東西,以避免與服務器規格和已安裝的實用程序發生沖突。
在Ruby on Rails上,不僅要學習語言和框架,還有很多東西要學習。 PHP非常簡單,只需上傳即可使用。 因此,在開發應用程序之前,您可能還需要研究一下。
我認為Rails很棒,這將是我進行此類項目的首選,但是如果您實際上在緊迫的期限內,並且從Rails的第一手開始,那就不要這樣做。 跟着你所知道的去。 PHP可能不是最出色的,但是它是一種非常有用的語言。
盡管人們可能會說些什么,但是Rails確實具有不平凡的學習曲線,尤其是在您不熟悉MVC的情況下。 肯定有一種“ Rails Way”來做事,並且來自大多數其他框架,這需要一段時間才能解決。
我認為,如果您嘗試着急於學習Rails,將會感到沮喪,而且恐怕這會破壞您對此的印象。 相反,請嘗試在業余時間或在時間表更寬松的項目中學習它。 我認為您將通過這種方式獲得更多收益。
1個月足夠學習RoR並建立網站嗎?
是。
編寫直接SQL查詢是我的強項之一,我想使用它。 我聽說如果直接編寫SQL查詢,那么使用RoR會很痛苦。 這是真的? 或者我可以說執行查詢,將結果(作為列表或字典)給我,然后告訴您如何呈現它們?
用Rails編寫原始sql並不比用PHP編寫困難。 返回的對象將是列名/值對的哈希。 如果您決定開始使用ActiveRecord並返回ActiveRecord對象(不是普通哈希),則可能會出現唯一的問題
我聽說RoR確實加入了內存,並且沒有使用數據庫提供的功能。 它是否正確?
如果您使用原始sql,Rails不應對此進行干預。
我需要創建一個顯示很多圖像,視頻和Java小程序的網站。 RoR會阻礙我這樣做的能力嗎?
沒有。
我可以使用PHP框架。 這是一個壞主意嗎? 如果不是,那么就編程方便性而言,哪個PHP框架最接近Rails。
IDK。
我真的很喜歡使用ActiveRecord,但是如果您喜歡原始sql,Rails仍然值得使用。 在編寫Ruby的同時,您將獲得良好的url處理,大量的內置安全性,良好的MVC架構以及漂亮的模板系統,對於許多人來說,這是一個很好的經驗。
不錯的話題-每個人在這里都有很好的評論。 這對我很有用。
我認為在一個時間敏感的項目上增加重寫一個月內您已經知道的內容的復雜性是一個壞主意。 對於任何“時間敏感”項目,使用您不熟悉的任何框架/工具可能都是錯誤的選擇。
話雖這么說, Zend_Framework for php的形式抽象非常扎實。 我發現遷移到ZF的時間比RoR更容易-我同時嘗試了兩種方法。
ZF的文檔很不錯-盡管閱讀庫的實際代碼仍然是我最好的文檔來源。 學習或啟動並不難-如果您不介意IRC / stackoverflow問題,那么您應該可以很快地學習它。
不要僅僅因為看起來很酷就登上Rails火車。 我知道這是當今所有人都在談論的話題,但老實說,這並不是那么特別,您最好使用以自己喜歡的語言編寫的框架。 如果您真的很精通SQL,那么學習如何使用ActiveRecord的時間將比只手工編寫查詢的時間還要長,並且ActiveRecord本質上是Rails的一半,這與使用框架的目的相違背。 因此,根據您提供的背景信息,我會說使用像CodeIgniter這樣的PHP框架(我自己沒有使用過,但是我聽說它很棒,聽起來像您所需要的)。
該項目應在一個月內完成,並且對時間非常敏感。 1個月足夠學習RoR並建立網站嗎?
如前所述,如果截止日期很短,請堅持使用您所知道的信息。
我可以使用PHP框架。 這是一個壞主意嗎? 如果不是,那么就編程方便性而言,哪個PHP框架最接近Rails。
CakePHP非常像紅寶石,有人告訴我它是PHP程序員接觸Ruby和MVC的良好墊腳石。
使用php + Zend Framework,它具有ror的所有功能,並且速度更快
ror非常慢,非常昂貴,並且需要功能強大的服務器
* The project should be done in a month and is very time sensitive. Is 1 month enough for learning with and building a website in RoR?
學習Zend Framework就足夠了
* Writing direct SQL queries is one of my strengths and I would like to use it. I heard that RoR is a pain to use if I am writing SQL queries directly. Is this true? Or can I just say execute a query, give me the results (as a list or dictionary) and then I will tell you how to render them?
應該直接編寫SQL查詢,所以ror會進行非常緩慢且未優化的查詢
* I am OK using a PHP framework. Is this a bad idea? If not, which PHP framework is closest to Rails in terms of programming convenience.
您需要的只是mvc框架,我為您提供Zend框架
對於1個月的項目,請使用您更了解的內容! 到目前為止,我已經使用了Qcodo和Qcubed,但是您只能從數據庫生成接口。 任何PHP框架都使用DSL。 我喜歡Python作為語言,但從未使用過。 昨天我在看Ruby On Rails,看起來不錯。 RoR提供了一種編寫敏捷Web應用程序的新方法,但是現在也有麻煩了。 Grails用Groovy編寫,在JVM上運行並且是動態語言。 Grails的優勢在於可以使用任何Java代碼和框架,但具有動態語言的簡單性。 使用Grails,您可以完成Rails的相同任務甚至更多。
我的建議是,使用您所了解的知識,同時學習Grails,這就是我現在正在做的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.