Sunspot Solr not responding to Rake tasks - ruby-on-rails

Running : rake sunspot:reindex --trace
Returned: Don't know how to build task sunspot:reindex.
Tried running rake sunspot:solr:start --trace and got the following output:
** Invoke sunspot:solr:start (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute sunspot:solr:start
Sunspot 2.0.0 | Solr 1.0.9 | rails 2.3.5 | MacOS X

I imagine whats going on here is the gem did not properly reinstall. Also it when working with old apps, you need to make sure that you update your system gems to the right version.
Start from scratch and do the following :
rvm gemset delete your_gemset
cd .
gem update --system 0.0.0 # Whatever version you know worked with the app you are using.
rake gems:install
rake gems:install is very flaky and is essentially why it was replaced with Bundler. Assuming your gems did not install all the way, try to manually install what didn't work :
gem install sunspot_solr
Then finally try the command :
rake sunspot:solr:start
You should have an active PID start that you can reveal by typing :
ps aux | grep solr

If you are running sunspot in a windows environement, then rake sunspot:solr:start will not work.
First you have to change in your C:\Ruby187\lib\ruby\gems\1.8\gems\sunspot-1.2.1\lib\sunspot\server.rb
comment the line
exec(Escape.shell_command(command))
and add the following line
exec(Escape.shell_command(command).gsub("'",'"'))
Then try using rake sunspot:solr:run
This is applicable only for your windows environment

Related

Capistrano deploy:migrate Could not find rake-0.9.2.2 in any of the sources

My Capistrano deploy:migrate task is set to run a simple rake db:migrate command, as follows:
env PATH=/home/user/.gems/bin sh -c 'cd /home/user/app/releases/20121003140503 && rake RAILS_ENV=production db:migrate'
When I run this task during an ssh session manually it completes successfully. However when I run from my local development box, I receive the following error:
** [out :: app] Could not find rake-0.9.2.2 in any of the sources
I am able to locate my rake gem by typing which rake via ssh (/home/user/.gems/bin/rake) and rake --version gives me "rake, version 0.9.2.2," so I don't understand why this command fails via Capistrano?
Capistrano does not place bundle exec before rake command in default. If you are sure you have the rake gem in your bundle, try adding this to your deploy.rb.
set :rake, 'bundle exec rake'
This will tell Capistrano to instead of just rake run bundle exec rake. If it is in your bundle, you won't have any problems any more and you will also avoid collisions if you have more versions of rake installed on your system.
You might also just need to bundle your gems with this:
require "bundler/capistrano"
Via: Why is Capistrano not installing gems with bundler?
Once you go into your app folder, you simply type:
$bundle exec rake instead of just $rake

Sunspot Solr error on rake sunspot:index

I am trying to use Sunspot gem for Solr on a Rails 3 app. I have followed RailsCast #278, since I am using Windows I have to do rake sunspot:solr:run and that seems to start with no error. However when I try to run rake sunspot:reindex I get the error:
No connection could be made because the target machine actively refused it. - connect(2)
I am using mysql2 gem for mysql. Please advise.
I have to do rake sunspot:solr:run and that seems to start with no error
It sounds like the connection is not being accepted at all to Solr, so this part is my first suspicion — you should get a lot of fairly verbose output from Solr when starting it. Can you share some output of that?
Also, what version of java are you running? (java -version)
I had the same problem running "bundle exec rake sunspot:solr:reindex" on Windows. The solution is to add the correct RAILS_ENV option, for me it was test, e.g.
bundle exec rake sunspot:solr:reindex RAILS_ENV=test
Yes, you'll have to have solr server running beforehand:
bundle exec rake sunspot:solr:run RAILS_ENV=test

bundle exec rake db:migrate causes "can't find executable rake" error

I recently installed Rails 3.1 and now my old Rails 3.0 app won't rake db:migrate. This is what happens when I try to run bundle exec rake db:migrate. I'm on Ubuntu with no RVM
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/shared_helpers.rb:142:in `block in cripple_rubygems': can't find executable rake (Gem::Exception)
from /usr/local/lib/ruby/gems/1.9.1/bin/rake:19:in `<main>'
When I run just rake db:migrate, it outputs:
rake aborted!
You have already activated rake 0.9.2.2, but your Gemfile requires rake 0.8.7. Consider using bundle exec.
(See full trace by running task with --trace)
which rake
/usr/local/bin/rake
Put this in your Gemfile:
gem 'rake' , '>= 0.9.2'
and run bundle update
you need to give more details in what environment you're running this:
which OS?
are you using RVM?
is this a brand new RVM setup per chance?
1) Try to run this:
gem list | rake
what output do you get?
2) If you don't see rake in the output, then do this:
gem install rake
and then try rake db:migrate again
3) If you see rake, but it still doesn't work, then do this:
which rake
what output do you get? it should look something like this:
~/.rvm/gems/ruby-1.9.2-p0/bin/rake

newbie: error message when 'rake -T'

I am using Ruby Enterprise Edition for my project. When I check all my rake task by run the command rake -T , I got the following error message:
You have already activated rake 0.9.2.2, but your Gemfile requires rake 0.9.2. Using bundle exec may solve this.
The error message implies that I can use bundle exec to solve the problem, but I am not sure how? So, how to get rid of this error message?
------------------------------ more ---------------------------
I prefer to update my Gemfile instead of run bundle exec rake -T. But when I open my project Gemfile, I did not see rake 0.9.2 in my Gemfile, why the error message complains that I have it? Where could be the place I defined rake 0.9.2??
Run bundle exec rake -T, this ensures that the version of rake that is specified in your Gemfile is running, not another version.
Alternatively, update your Gemfile.
This is because your rake tool does not match the version written in the Gemfile.
You first need to run this command, to ensure rake 0.9.2 get installed:
bundle install
Then, you can run rake 0.9.2 with the following command:
bundle exec rake -T
The bundle thing is a nice tool to help you manage the dependency of your application. You can get more info from here.

Use older version of Rake

I have Rake version 0.9.1 but I need to use 0.8.7 for a project, and I'm fairly certain I have both version installed but it always uses 0.9.1 by default. Is there a way to specify which version of Rake to use?
I'm trying to run this: rake db:drop db:create db:migrate db:seed
and I get this error:
You have already activated rake 0.9.1, but your Gemfile requires rake 0.8.7. Consider using bundle exec.
gem search (or list) rake, should tell you which versions are installed.
You can invoke rake with a specific version number bracketed with
underscores.
$rake _0.7.3_
This is a standard feature of gem packaged binaries.
You can specify the version of Rake to use, in your Gemfile:
gem 'rake', '0.8.7'
Though the "error" message you are getting says it all... you need to run:
bundle exec rake ...
... in order to use the right rake to run your rake tasks.
More info on bundle exec: http://gembundler.com/man/bundle-exec.1.html
Try executing gem uninstall rake then just pick the version you want to uninstall.
It happens because you are using rake from the system. (latest version by default)
The solution is use follow command:
bundle exec rake db:migrate
Also, you can create alias. Because this command is too big and difficult to write.
echo "alias be='bundle exec'" >> ~/.bash_profile
source ~/.bash_profile
Then you can use follow short command:
be rake db:migrate

Resources