There are many forms of civil disobedience, and I don’t think you can say that one is more effective than another, except in how they use the situation to create a critical mass of supporters, and weaken the opposition.
Ghandi’s non-violence was effective because it made it easy for the world to understand the moral issues at hand, and to rally support. People were inspired to align with his “good” cause, and those soldiers and citizens who found themselves against the movement, began to have a crisis of conscience. But could this work anywhere? Absolutely not. Had the population of Indians compared to British been much smaller, the movement would simply have been violently quashed. In other more extreme examples, with more extreme leaders, anyone and everyone involved in the non-violent resistance would simply be rounded up and shot. In this scenario, a violent solution might be much for effective.
There is no hard and fast rule to which forms of resistance will work, and which won’t. The key is capturing the hearts of enough people and bringing them onto your side with a belief that this is a cause worth fighting for and to create such a powerful force that the opposition loses the will or the ability to continue.