On 14 Mar 2011, at 18:39, Ajay <[email protected]> wrote:

> Hi Bryan,
> 
> I executed the symlink command you sent me and then executed
> rails server
> But, I am still getting the same error.
> /usr/local/bin/ruby: symbol lookup error: /usr/local/lib/ruby/gems/
> 1.9.1/gems/gems/mysql2-0.2.6/lib/mysql2/mysql2.so: undefined symbol:
> RARRAY_LEN
> 
> In addition, I have done the following experiments

I think you are getting confused as you have several things going wrong at the 
same time. 
- something owned by root that is stopping webrick from dripping its pid file. 
Fix this by fixing the permissions on the folder it's trying to write its pid 
file to, not by running as root.
- something wrong with your mysql gem (the messages about RARRAY_LEN)
- possibly something wrong with your mysql install (if the only mysql problem 
you have is the RARRAY_LEN message then i'd stop fiddling with my.cnf - it's 
extremely unlikely that a problem with your mysql install caused that

Other things: don't run bundle:install as  root - that will screw things up. If 
you have multiple versions of ruby installed, make sure rake,rails etc. are the 
ones from the ruby version you actually want (if my memory is correct 
RARRAY_LEN was a #define macro pre ruby 1.9, but became an actual function in 
1.9, trying to load something compiled for 1.9 with the wrong ruby might cause 
that message (although gems should be segregated by ruby version))

Fred


> rails new blog -d=mysql
> cd blog
> su bundle install
> rake db:create
> rails server
> 
> The above set of instructions are rails instructions for getting
> started on rails. With these instructions, rails server starts well at
> the following URL
> http://0.0.0.0:3000
> 
> For the above set of instructions, I have the following lines in my
> GemFile
> 
> gem 'rails', '3.0.5'
> gem 'mysql2'
> 
> In my config/database.yml, I have
> development:
>  adapter: mysql2
>  encoding: utf8
>  reconnect: false
>  database: blog_development
>  pool: 5
>  username: root
>  password:
>  socket: /tmp/mysql.sock
> 
> I tried having
>  socket: /var/lib/mysql/mysql.lock
> with the symbol link and without it. It does not seem to make any
> difference.
> 
> With the spree package that I am trying to run, I have the following
> content in my Gemfile
> 
> gem 'rails', '3.0.5'
> 
> # Bundle edge Rails instead:
> # gem 'rails', :git => 'git://github.com/rails/rails.git'
> 
> gem 'mysql2'
> gem 'newrelic_rpm'
> 
> # Followed by spree itself first, all spree-specific extensions second
> gem 'spree', '0.40.3'
> gem 'spree_active_shipping', :git => 'https://github.com/spree/
> spree_active_shipping.git'
> gem 'spree_product_assembly', :git => 'git://github.com/spree/spree-
> product-assembly.git'
> gem 'spree_static_content', :git => 'git://github.com/spree/
> spree_static_content.git'
> 
> I executed the following set of commands
> rails new xyz -d=mysql
> cd xyz
> su bundle install
> rake db:create
> 
> rails g spree:site
> rake spree:install
> 
> rake spree_sample:install
> rails server --config=/usr/local/bin/mysql_config
> 
> 
> Above are the instructions given for spree at the URL,
> http://spreecommerce.com/documentation/getting_started.html
> 
> config/database.yml is same as previously mentioned
> 
> Now executing,
> rails server
> gives
> /usr/local/bin/ruby: symbol lookup error: /usr/local/lib/ruby/gems/
> 1.9.1/gems/gems/mysql2-0.2.6/lib/mysql2/mysql2.so: undefined symbol:
> RARRAY_LEN
> 
> Question is my why two different results? Is it because in one of the
> case, mysql connection is not needed as no information is there in the
> tables?
> 
> Also, I had tried downgrading rails to 3.0.4 and then executing the
> above set of instructions. But, same error
> 
> I read in the following post
> http://www.linuxforums.org/forum/red-hat-fedora-linux/31155-error-2002-hy000-cant-connect-local-mysql-server.html
> that adding host name resolves the issue
> Therefore, I tried different options like
> host = starwars.localdomain
> host = starwars
> in /etc/my.cnf
> 
> But, when I do that I am unable to restart my MySQL server as it says
> that PID file has not been  written to (or unable to write).
> Therefore, I am unable to mention
> host=0.0.0.0, which where rails server is getting started
> 
> I get similar error of unable to start mysql server, when I have
> socket=/tmp/mysql.sock
> in /etc/my.cnf
> 
> Thinking that linking was not allowed, I even tried disabling the
> following line in /etc/my.cnf
> symbolic-links=0
> But, again server does not start, whenever I change anything in /etc/
> my.cnf
> 
> My present my.cnf content is as follows
> [mysqld]
> datadir=/var/lib/mysql
> socket=/var/lib/mysql/mysql.sock
> #socket=/tmp/mysql.sock
> user=mysql
> # Disabling symbolic-links is recommended to prevent assorted security
> risks
> symbolic-links=0
> #host=starwars
> 
> [mysqld_safe]
> log-error=/var/log/mysqld.log
> pid-file=/var/run/mysqld/mysqld.pid
> 
> [client]
> socket=/var/lib/mysql/mysql.sock
> #socket=/tmp/mysql.sock
> #host=starwars.localdomain
> 
> In one situation, which I can still reproduce, I am getting the
> following error, when I running as non-root
> 
> => Booting WEBrick
> => Rails 3.0.4 application starting in development on http://0.0.0.0:3000
> => Call with -d to detach
> => Ctrl-C to shutdown server
> Exiting
> /usr/local/lib/ruby/gems/1.9.1/gems/gems/rack-1.2.2/lib/rack/server.rb:
> 267:in `initialize': Permission denied - /home/Ajay/spree/rails4store/
> tmp/pids/server.pid (Errno::EACCES)
>    from /usr/local/lib/ruby/gems/1.9.1/gems/gems/rack-1.2.2/lib/rack/
> server.rb:267:in `open'
>    from /usr/local/lib/ruby/gems/1.9.1/gems/gems/rack-1.2.2/lib/rack/
> server.rb:267:in `write_pid'
>    from /usr/local/lib/ruby/gems/1.9.1/gems/gems/rack-1.2.2/lib/rack/
> server.rb:203:in `start'
>    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.4/lib/rails/
> commands/server.rb:65:in `start'
>    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.4/lib/rails/
> commands.rb:30:in `block in <top (required)>'
>    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.4/lib/rails/
> commands.rb:27:in `tap'
>    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.4/lib/rails/
> commands.rb:27:in `<top (required)>'
>    from script/rails:6:in `require'
>    from script/rails:6:in `<main>'
> 
> Thinking that probably I need to run as root, I executed as root
> It then gives the usual mysql2 error that I mentioned earlier. I
> thought of mentioning it to you in case you have seen this error
> before.
> 
> Please let me know if I am missing something or any other ideas that
> you have, which I can try out.
> 
> Thanks a lot for your help,
> Ajay
> 
>> 
>> Hi Ajay,
>> 
>> It might still be that it doesn't understand how to talk to MySQL. I'm just
>> trying to cover the it knowing where things are. It may still not know which
>> socket to use. I ran into this issue on a Linux machine once and got around
>> it by symlinking from the tmp folder to the actual socket. Try that and see
>> what happens.
>> 
>> cd /tmp
>> sudo ln -s /var/lib/mysql/mysql.sock mysql.sock
>> 
>> Thanks,
>> B.
> 
> -- 
> 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 this group at 
> http://groups.google.com/group/rubyonrails-talk?hl=en.
> 

-- 
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 this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to