个人工具

“UbuntuHelp:RubyOnRails”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
Intro
第1行: 第1行:
 
{{From|https://help.ubuntu.com/community/RubyOnRails}}
 
{{From|https://help.ubuntu.com/community/RubyOnRails}}
 
{{Languages|UbuntuHelp:RubyOnRails}}
 
{{Languages|UbuntuHelp:RubyOnRails}}
 +
=== Quick shortcut ===
 +
If you would rather not setup the Ruby on Rails framework by hand, then one of the easiest ways to get up and running with Ruby on Rails is the [[UbuntuHelp:TurnKeyRails | TurnKey Ruby on Rails ]] installable live CD appliance, which is based on Ubuntu 8.04.1 (Hardy).
 
=== Intro ===
 
=== Intro ===
 
These instructions are for Ubuntu 8.04 LTS (hardy). Instead of using <code><nowiki>apt</nowiki></code> we use gems because of what ReinH put best...
 
These instructions are for Ubuntu 8.04 LTS (hardy). Instead of using <code><nowiki>apt</nowiki></code> we use gems because of what ReinH put best...
第6行: 第8行:
 
<ReinH> Let gems manage your rails package otherwise gem and apt-get will start fighting like Spock and Captain Kirk in Amok Time. If you haven't seen that episode, trust me: you don't want that.
 
<ReinH> Let gems manage your rails package otherwise gem and apt-get will start fighting like Spock and Captain Kirk in Amok Time. If you haven't seen that episode, trust me: you don't want that.
 
''
 
''
简介
 
 
本文介绍基于ubuntu 8.04。我们将使用gems包管理工具而不是apt 安装相关软件.
 
 
 
=== Get Ruby ===
 
=== Get Ruby ===
 
<pre><nowiki>
 
<pre><nowiki>
第15行: 第13行:
 
</nowiki></pre>
 
</nowiki></pre>
 
=== Server Installation ===
 
=== Server Installation ===
Now you have Ruby, you already got a server included, WEBrick. You may settle with that, also because the installation is much easier, and reboots are faster. But it lacks the configuration options that apache and lighttpd offer. So if you want to have RubyOnRails running on apache or lighttpd, make sure you have installed these first.
+
Now you have ruby, you already got a server included, WEBrick. You may settle with that, also because the installation is much easier, and reboots are faster. But it lacks the configuration options that apache and lighttpd offer. So if you want to have RubyOnRails running on apache or lighttpd, make sure you have installed these first.
 
==== Apache ====
 
==== Apache ====
 
<pre><nowiki>
 
<pre><nowiki>
第28行: 第26行:
 
</nowiki></pre>
 
</nowiki></pre>
 
=== Installing RubyGems ===
 
=== Installing RubyGems ===
The link below is to a specific version of RubyGems (version 1.1).  You can get a later version from http://rubyforge.org/frs/?group_id=126, but it should not be really necessary because we ask rubygems to update itself at the end. But to make it more complete, a description of RubyGems 1.2 is also included, below the install instructions of RubyGems 1.2.
+
The link below is to a specific version of RubyGems (version 1.1).  You can get a later version from http://rubyforge.org/frs/?group_id=126, but it should not be really necessary because we ask RubyGems to update itself at the end. But to make it more complete, a description of RubyGems 1.2 is also included, below the install instructions of RubyGems 1.2.
 
==== RubyGems 1.1.0 ====
 
==== RubyGems 1.1.0 ====
 
<pre><nowiki>
 
<pre><nowiki>
第69行: 第67行:
 
</nowiki></pre>
 
</nowiki></pre>
 
=== Preparing for your first rails app ===
 
=== Preparing for your first rails app ===
Configuration of the webserver also assumes you have by then a rails application set up. Simpy enter to get that done (it will create you a first test page:
+
Configuration of the webserver also assumes you have by then a rails application set up. Simply enter to get that done (it will create you a first test page):
 +
Default (sqlite3 backend):
 
<pre><nowiki>
 
<pre><nowiki>
 
rails /home/myuser/www/mynewapp
 
rails /home/myuser/www/mynewapp
 
</nowiki></pre>
 
</nowiki></pre>
You will see a bunch of stuff on the shell... that should be fine (unless you see a error message). that created the rails folder with all the stuff, so now you should have something like have: /home/myuser/www/mynewapp/public
+
For a mysql back-end:
 +
<pre><nowiki>
 +
rails /home/myuser/www/mynewapp -d mysql
 +
</nowiki></pre>
 +
You will see a bunch of stuff on the shell... that should be fine (unless you see a error message). That created the rails folder with all the stuff, so now you should have something like have: /home/myuser/www/mynewapp/public
 
=== Configure the server ===
 
=== Configure the server ===
==== WebTrick (Ruby's server) ====
+
==== WEBrick (Ruby's server) ====
 
No configuring needed, everything is ready to create your first application. You can even try this step before you try launching your application via apache or lighttpd:
 
No configuring needed, everything is ready to create your first application. You can even try this step before you try launching your application via apache or lighttpd:
 
<pre><nowiki>
 
<pre><nowiki>
第87行: 第90行:
 
[2008-07-28 04:39:17] INFO  WEBrick::HTTPServer#start: pid=6860 port=3000
 
[2008-07-28 04:39:17] INFO  WEBrick::HTTPServer#start: pid=6860 port=3000
 
</nowiki></pre>
 
</nowiki></pre>
Your application is now responding at `http://0.0.0.0:3000`; press Ctrl+C to stop the web server. If you get errors related to the database, you might want to instal sqlite, or create a database using
+
Your application is now responding at `http://0.0.0.0:3000`; press Ctrl+C to stop the web server. If you get errors related to the database, you might need to install a DB connector, or create a database.
 +
Install the sqlite3 connector:
 +
<pre><nowiki>
 +
sudo apt-get install libsqlite3-dev
 +
sudo gem install sqlite3-ruby
 +
</nowiki></pre>
 +
Or install the MySQL database and it's connector:
 +
<pre><nowiki>
 +
sudo apt-get install mysql-server mysql-client
 +
sudo apt-get install libmysql-ruby libmysqlclient-dev
 +
sudo gem install mysql
 +
</nowiki></pre>
 
==== Apache ====
 
==== Apache ====
 
Run the following to install passenger, an apache module that adds support for running rails apps within apache:
 
Run the following to install passenger, an apache module that adds support for running rails apps within apache:
第107行: 第121行:
 
PassengerRuby /usr/bin/ruby1.8
 
PassengerRuby /usr/bin/ruby1.8
 
</nowiki></pre>
 
</nowiki></pre>
Now you should point apache to the location of your ruby app. Create something like this in /etc/apache2/sites-available/ror.myhost.com
+
Now you should point apache to the location of your Ruby app. Create something like this in /etc/apache2/sites-available/ror.myhost.com
 
<pre><nowiki>
 
<pre><nowiki>
 
<VirtualHost *>
 
<VirtualHost *>
第122行: 第136行:
 
RailsBaseURI /mynewapp
 
RailsBaseURI /mynewapp
 
</nowiki></pre>
 
</nowiki></pre>
''murb: I had to add <code><nowiki>RailsEnv development</nowiki></code> as well to get around the 'no route found to match "/rails/info/properties" with {:method=>:get}' warning... (can someone elaborate on why?)''
+
''murb: I had to add <code><nowiki>RailsEnv development</nowiki></code> as well to get around the 'no route found to match "/rails/info/properties" with {:method=>:get}' warning... (can someone elaborate on why?)'' apparently this is because /info/properties is buggy and no longer supported: http://www.ruby-forum.com/topic/161924
 
Save, and enable the rewrite module for apache, and register this site... and finally, restart apache.  
 
Save, and enable the rewrite module for apache, and register this site... and finally, restart apache.  
 
<pre><nowiki>
 
<pre><nowiki>
第165行: 第179行:
  
 
</nowiki></pre>  
 
</nowiki></pre>  
and you're set, go to http://localhost and you should see the rails index... click on the link "About your rails enviroment" and if you dont see a 404 o 500 error... then your're set (you should see either a rails error, or a rails message or something like that)
+
and you're set, go to http://localhost and you should see the rails index... click on the link "About your rails environment" and if you don't see a 404 or 500 error... then you're set (you should see either a rails error, or a rails message or something like that).
 
for any comments on the lighttpd install please feel free to mail me to [email protected]
 
for any comments on the lighttpd install please feel free to mail me to [email protected]
 
----
 
----

2008年12月16日 (二) 20:02的版本

Quick shortcut

If you would rather not setup the Ruby on Rails framework by hand, then one of the easiest ways to get up and running with Ruby on Rails is the TurnKey Ruby on Rails installable live CD appliance, which is based on Ubuntu 8.04.1 (Hardy).

Intro

These instructions are for Ubuntu 8.04 LTS (hardy). Instead of using apt we use gems because of what ReinH put best... <ReinH> Let gems manage your rails package otherwise gem and apt-get will start fighting like Spock and Captain Kirk in Amok Time. If you haven't seen that episode, trust me: you don't want that.

Get Ruby

sudo apt-get install ruby-full build-essential

Server Installation

Now you have ruby, you already got a server included, WEBrick. You may settle with that, also because the installation is much easier, and reboots are faster. But it lacks the configuration options that apache and lighttpd offer. So if you want to have RubyOnRails running on apache or lighttpd, make sure you have installed these first.

Apache

sudo apt-get install apache2 apache2-mpm-prefork apache2-prefork-dev

Lighttpd

Preparing the house:


sudo apt-get install lighttpd libfcgi-ruby1.8

Installing RubyGems

The link below is to a specific version of RubyGems (version 1.1). You can get a later version from http://rubyforge.org/frs/?group_id=126, but it should not be really necessary because we ask RubyGems to update itself at the end. But to make it more complete, a description of RubyGems 1.2 is also included, below the install instructions of RubyGems 1.2.

RubyGems 1.1.0

wget http://rubyforge.org/frs/download.php/34638/rubygems-1.1.0.tgz
tar xzvf rubygems-1.1.0.tgz
cd rubygems-1.1.0
sudo ruby setup.rb
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
sudo gem update --system

RubyGems 1.2.0

wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz
tar xzvf rubygems-1.2.0.tgz
cd rubygems-1.2.0
sudo ruby setup.rb
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
sudo gem update --system

The below error is sometimes encountered after running sudo gem update --system.

/usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)

To fix that error follow the below instructions.

sudo gedit /usr/bin/gem

In the file find:
require 'rubygems'

Add the following line below the above line:
require 'rubygems/gem_runner'

Installing rails

We can now use RubyGems to install rails:


sudo gem install rails

Preparing for your first rails app

Configuration of the webserver also assumes you have by then a rails application set up. Simply enter to get that done (it will create you a first test page): Default (sqlite3 backend):

rails /home/myuser/www/mynewapp

For a mysql back-end:

rails /home/myuser/www/mynewapp -d mysql

You will see a bunch of stuff on the shell... that should be fine (unless you see a error message). That created the rails folder with all the stuff, so now you should have something like have: /home/myuser/www/mynewapp/public

Configure the server

WEBrick (Ruby's server)

No configuring needed, everything is ready to create your first application. You can even try this step before you try launching your application via apache or lighttpd:

$cd /home/myuser/www/mynewapp
$ruby script/server
=> Booting WEBrick...
=> Rails 2.1.0 application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-07-28 04:39:17] INFO  WEBrick 1.3.1
[2008-07-28 04:39:17] INFO  ruby 1.8.6 (2007-09-24)
[2008-07-28 04:39:17] INFO  WEBrick::HTTPServer#start: pid=6860 port=3000

Your application is now responding at `http://0.0.0.0:3000`; press Ctrl+C to stop the web server. If you get errors related to the database, you might need to install a DB connector, or create a database. Install the sqlite3 connector:

sudo apt-get install libsqlite3-dev
sudo gem install sqlite3-ruby

Or install the MySQL database and it's connector:

sudo apt-get install mysql-server mysql-client
sudo apt-get install libmysql-ruby libmysqlclient-dev
sudo gem install mysql

Apache

Run the following to install passenger, an apache module that adds support for running rails apps within apache:

sudo gem install passenger
sudo passenger-install-apache2-module

Now you have to configure apache to point to the passenger module. Simply copy the suggested code from the passenger-install-apache2-module installation to your apache configuration file, which should be something along the lines of: (if you are using RubyGems 1.1):

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-1.0.3/ext/apache2/mod_passenger.so
RailsSpawnServer /usr/lib/ruby/gems/1.8/gems/passenger-1.0.3/bin/passenger-spawn-server
RailsRuby /usr/bin/ruby1.8

(if you are using RubyGems 1.2):

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.3/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.3
PassengerRuby /usr/bin/ruby1.8

Now you should point apache to the location of your Ruby app. Create something like this in /etc/apache2/sites-available/ror.myhost.com

<VirtualHost *>
    ServerName ror.myhost.com
    DocumentRoot /home/myuser/www/mynewapp/public
</VirtualHost>

Alternatively, you could run rails in a specific sub uri of your current host, e.g. localhost. First, make a symbolic link to your rails public folder from with var/www (or wherever you have the root of your apache www folder), e.g.:

ln -s /home/myuser/www/mynewapp/public /var/www/mynewapp

In case of localhost (which is the default host with a fresh ubuntu/apache install) edit default in /etc/apache2/sites-available and add:

RailsBaseURI /mynewapp

murb: I had to add RailsEnv development as well to get around the 'no route found to match "/rails/info/properties" with {:method=>:get}' warning... (can someone elaborate on why?) apparently this is because /info/properties is buggy and no longer supported: http://www.ruby-forum.com/topic/161924 Save, and enable the rewrite module for apache, and register this site... and finally, restart apache.

sudo a2enmod rewrite
sudo a2ensite ror.myhost.com
sudo /etc/init.d/apache2 restart

Lighttpd

Edit lighttpd.conf, e.g.:


sudo kate /etc/lighttpd/lighttpd.conf

and here starts the tricky part, paste at the end of the file:


server.modules   += ( "mod_fastcgi", "mod_rewrite" )


$HTTP["host"] == "localhost" {
        server.document-root = "/home/santiago/proyectos/beholder/public/"

        server.dir-listing          = "disable"
        server.error-handler-404 = "/dispatch.fcgi"

        fastcgi.server      = ( ".fcgi" => ( "localhost" => (
                "min-procs"       => 1,
                "max-procs"       => 1,
                "socket" => "/tmp/ruby-beholder.socket",
                "bin-path" => "/home/santiago/proyectos/beholder/public/dispatch.fcgi",
                "bin-environment" => ( "RAILS_ENV" => "development" )
        ) ) )

}

now run


sudo /etc/init.d/lighttpd restart

and you're set, go to http://localhost and you should see the rails index... click on the link "About your rails environment" and if you don't see a 404 or 500 error... then you're set (you should see either a rails error, or a rails message or something like that). for any comments on the lighttpd install please feel free to mail me to [email protected]