|
From: <caw...@us...> - 2007-07-26 15:09:16
|
Revision: 2885
http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=2885&view=rev
Author: cawilliams
Date: 2007-07-26 08:09:09 -0700 (Thu, 26 Jul 2007)
Log Message:
-----------
if it looks like we don't have ruby installed/setup or rubygems installed then don't actually run anythign that requires the gem file. Instead do a check and return a boolean/empty collection before getting into bad situation.
Modified Paths:
--------------
trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/GemManager.java
Modified: trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/GemManager.java
===================================================================
--- trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/GemManager.java 2007-07-26 15:02:42 UTC (rev 2884)
+++ trunk/com.aptana.rdt/src/com/aptana/rdt/internal/core/gems/GemManager.java 2007-07-26 15:09:09 UTC (rev 2885)
@@ -169,7 +169,6 @@
}
private Set<Gem> loadRemoteGems() {
-
try {
List<String> lines = new ArrayList<String>();
try {
@@ -280,6 +279,7 @@
}
private Set<Gem> loadLocalGems() {
+ if (!isRubyGemsInstalled()) return new HashSet<Gem>();
ILaunchConfiguration config = createGemLaunchConfiguration(LIST_COMMAND + " " + LOCAL_SWITCH, false);
List<String> lines = readOutput(config);
StringBuffer buffer = new StringBuffer();
@@ -297,6 +297,7 @@
* @see com.aptana.rdt.internal.gems.IGemManager#update(com.aptana.rdt.internal.gems.Gem)
*/
public boolean update(final Gem gem) {
+ if (!isRubyGemsInstalled()) return false;
try {
String command = UPDATE_COMMAND + " " + gem.getName();
ILaunchConfiguration config = createGemLaunchConfiguration(command, true);
@@ -382,10 +383,18 @@
private static String getGemScriptPath() {
IVMInstall vm = RubyRuntime.getDefaultVMInstall();
+ if (vm == null) return null;
File installLocation = vm.getInstallLocation();
String path = installLocation.getAbsolutePath();
return path + File.separator + "bin" + File.separator + "gem";
}
+
+ private boolean isRubyGemsInstalled() {
+ String path = getGemScriptPath();
+ if (path == null) return false;
+ File file = new File(path);
+ return file.exists();
+ }
/*
* (non-Javadoc)
@@ -393,6 +402,7 @@
* @see com.aptana.rdt.internal.gems.IGemManager#installGem(com.aptana.rdt.internal.gems.Gem)
*/
public boolean installGem(final Gem gem) {
+ if (!isRubyGemsInstalled()) return false;
try {
String command = INSTALL_COMMAND + " " + gem.getName();
if (gem.getVersion() != null
@@ -434,6 +444,7 @@
* @see com.aptana.rdt.internal.gems.IGemManager#removeGem(com.aptana.rdt.internal.gems.Gem)
*/
public boolean removeGem(final Gem gem) {
+ if (!isRubyGemsInstalled()) return false;
try {
String command = UNINSTALL_COMMAND + " " + gem.getName();
if (gem.getVersion() != null
@@ -555,6 +566,7 @@
public IPath getGemInstallPath() {
if (fGemInstallPath == null) {
+ if (!isRubyGemsInstalled()) return null;
ILaunchConfiguration config = createGemLaunchConfiguration("environment", false);
List<String> lines = readOutput(config);
if (lines == null || lines.size() < 3) return null;
@@ -618,6 +630,7 @@
}
public boolean updateAll() {
+ if (!isRubyGemsInstalled()) return false;
try {
ILaunchConfiguration config = createGemLaunchConfiguration(UPDATE_COMMAND, true);
final ILaunch launch = config.launch(ILaunchManager.RUN_MODE, null);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|