Hello,
Thanks Walter for your suggestions and information. I definitely
follow advice. Here's some surprising news. I actually got everything
working right inside Windows while still trying to get things to work in
Linux!!! My Linux installation does not even have the mysql gem or the
mysql2 gem installed. I thought for sure I had it installed earlier.
Some of the issues of trying to get Rails working in Linux as
recommended deal with my ability to do simple things like capture the output
of any command to a file. This would greatly help me to answer some of your
questions about what is going wrong.
I did figure out some things about a rails app that change how I
might try to access a page. For example, if I launch Webrick, and then
navigate to http://localhost:3000/demo/index
I get my demo controller and index action. It is inside an app called
simple_cms, or it could be in demo_app. However, if I try to visit
http://localhost:3000/simple_cms/demo/index that doesn't work. I get a
"Routing Error" No route matches (GET) "simple_cms/demo/index
So, how does Rails know which application to run if you had many apps
installed? For example, I have a testing environment where I use xampp. I
thought I'd install my rails app there and just use apache which is already
installed on my system. And I have many websites/applications in the htdocs
folder. Therefore, if I wanted to setup a simple cms based on php, I'd
maybe put it in htdocs/simple_cms/ and then I would know that I need to
include the directory simple_cms so that Apache knows how to deliver pages,
with each folder being self-contained. With Rails, how would this work, I
have a folder where I put files, for example the htdocs folder (maybe I
shouldn't use that for the Rails apps to avoid confusion), my sites
directory. So, I might have inside the sites directory the following:
simple_cms
mysecond_app
mythird_app
and these would all be directories under the sites directory. How does Ruby
on Rails know which one to serve?
Ok, at the risk of going off topic and discussing Linux issues,
could I ask that you tell me how I might issue the commands you mention,
such as the rails new command such that the output can be sent to a file
that is easy to find. I currently use putty for Windows and haven't figured
out how to select content and copy it to the Windows clip board so that I
could then paste that to a text editor.
My problems are with regard to where I left off in my Linux
installation of Ruby on Rails, I couldn't get the gem mysql or gem mysql2 to
install. When I type in gem list, I don't see either of those.
I type in my linux sandbox:
rails new demo_app -d mysql
I get Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native
extension.
Below that, an error occurred while installing mysql2 (0.3.11) and Bundler
cannot continue. Make sure that 'gem install mysql2 -v '0.3.11'` succeeds
before bundling. At which point, I try to do
Sudo Gem install mysql2 and I get asked for my password and then it says the
command sudo gem isn't recognized. So, I try it without sudo and it fails
to install.
I did pick up that book that happens to be directly related to the
tutorial that you sent to me.
Thanks,
Bruce
-----Original Message-----
From: Walter Lee Davis
Sent: Sunday, September 2, 2012 2:18 PM
To: [email protected]
Subject: Re: [Rails] Help getting started: Newbie: Windows and Rails
On Sep 2, 2012, at 1:50 PM, Bruce Whealton wrote:
I'll comment below.
On Sep 2, 2012, at 12:53 PM, Bruce Whealton wrote:
Bill,
First, I really appreciate your help. At the risk of sounding
naïve, in response to Dheeraj’s post that “You need to add it to the
gemfile and run the bundle command.” How do I do that? I guess this is
where I need to be more specific about where I left off. Ok, the
tutorial that I mentioned here:
http://blog.sudobits.com/2012/05/02/how-to-install-ruby-on-rails-in-ubuntu-12-04-lts/
uses the Webrick server. For some reason, when I started that server and
then tried to view the page using port 3000, it did not connect.
Were you trying to connect from within your virtualbox environment, or
from the host OS? Try looking at your Webrick-hosted sites from the same
OS that you launched them under -- that's the normal use-case for those
sorts of self-hosted apps. It's meant to be a window into your dev site,
just a quick-and-dirty hack to get you to a click-test of the app.
Yes, I was trying from the host OS. I do have KDE installed in Linux so I
can browse to the Webrick link.
Therefore, I had my VirtualBox setup with Ubuntu and using Apache2 on
port 8080, which I could get to from my host OS. I wasn’t seeing that
test app described at the above link, until I went into the folder
http://localhost:8080/test_app/
Of course, now, for some reason, I cannot get into any of the apps
that I just installed hours ago. I get Not Found at the test_app link
that I included just above. I can go to the http://localhost:8080/ uri
and see some web content that was put there. However, the test_app that
worked fine just a little while ago, is not working now. Had it been
working I would have said that the last problem to address is creating an
application with mysql support.
Not sure what this all means, but I would still try to see the site from
within the linux environment, if that's where it is running (that is, if
it was started with `rails server` from within the folder in a terminal).
I wonder why I cannot get an app created in RoR with support for mysql?
Please copy and paste the exact rails new … command you typed into terminal
when you created your test app.
There are tons of flags you can use to set up rails with various databases.
By default, it will use SQLite3, because that just works most places. If you
pass -d mysql to the new command, you will get a mysql connector. But note
that you don't have to do this at the beginning of your project. You can
create a default (SQLite) application, then transfer it to MySQL or
PostgreSQL or anything else that's supported, later in the project
life-cycle by changing a few lines of your gemfile and database.yml files.
If you have Apache running inside virtualbox, and you can see a test site
(the classic It Works! page) at :8080 from your host OS, then you need to
set up passenger inside Linux, configure each virtual host where you want
to run Rails, and it should just work. Passenger on Linux is a very
patient and instructive installer script, so much so that I have not yet
failed to get it running on a bare VPS, despite my home-school approach to
Linux admin.
Can you expand on this? What will Passenger do?
Passenger is one of the ways to serve Rails applications. Think of it as
mod_php but for Rails. It's an Apache module that understands the structure
of a Rails application and how to pass Web requests from Apache into Rails.
Learn more at http://modrails.org
It is frustrating that my problem is now apparently related to my
Linux installation on my system and I cannot address the other issues of
moving on to learning RoR.
I would take the patient advice of many others on this list, and please put
down the Lynda tutorial. Pick up the http://railstutorial.org path instead.
This is a FREE course that teaches you how to go from nothing to a working,
tested Rails app hosted on Heroku (which is also free) and will give you the
leg up you need without immersing you in the minutia of installation hell
where you seem to be circling. You will still want to get a working local
install of Rails, which will include being able to browse your test site
(hosted out of Webrick) locally at http://localhost:3000 But that is really
not as hard as your combination of aged tutorial and lack of experience in
Linux is giving you. There are even instructions in railstutorial that will
show you how to get Rails installed directly under Windows, although I would
urge you to charge on and get it to work in your Linux environment instead.
1) test_app from the tutorial:
http://blog.sudobits.com/2012/05/02/how-to-install-ruby-on-rails-in-ubuntu-12-04-lts/
**was** working fine with apache2, not with Webrick. Unlike in that
tutorial, I couldn’t go to just http://localhost:8080 or localhost:3000,
I had to add the directory in my browsers address bar, then I think I had
to go into public.
2) How are you installing the mysql2 gem? Are you using Bundler? In
the above referenced tutorial, I didn’t need mysql. However, when I
added that to the command line:
rails new simple_cms –d mysql
I got the message: “An error occurred while installing mysql2 (0.3.11),
and Bundler cannot continue. Make sure that ‘gem install mysqsl2 –v
‘0.3.11’` succeeds before bundling. So, I then enter
gem install mysql2 –v ‘0.3.11’
Then I try my install again... when asked to continue and over-write, I
say Y. Then I get the same error.
What is curious is that if I include the ` after the gem install mysql –v
‘0.3.11’ it gives me a different prompt.
3) Is the gem specified in the Gemfile? Were you able to rake
db:migrate or is that where you're having your problem?
I don’t know what the latter means. I can look at the Gemfile and it has
this in it:
source :rubygems
gemspec
Your gemfile should have quite a bit more than that inside it, at least on
a bare Rails app. Here's one now:
source 'https://rubygems.org'
gem 'rails', '3.2.7'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported
runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'debugger'
--
You received this message because you are subscribed to the Google Groups "Ruby on
Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit https://groups.google.com/groups/opt_out.