2012-01-04 3 views
36

В настоящий момент, когда я создаю новый контроллер, Rails также создает файл .js.coffee для контроллера. Поскольку я не использую CoffeeScript, я хочу, чтобы Rails генерировал для меня файлы .js.Как полностью отключить CoffeeScript в приложении Rails 3.1?

Достаточно ли прокомментировать coffee-rails gem, чтобы полностью отключить CofeeScript в приложении Rails 3.1?

+0

Вы можете получить список всех файлов coffeescript с 'find. -iname '*. coffee''. – Kris

ответ

57
  1. Закомментируйте gem "coffee-script" в вашем Gemfile
  2. Используйте .js вместо .js.coffee для файлов JavaScript
+2

Является ли это документированным где-то, что достаточно комментировать «кофе-скрипт»? –

+4

Почему бы вам просто не попробовать? –

+1

У меня нет этой строки в моем Gemfile, но мне все еще нужно установить JS-движок в производстве для компиляции активов (используя Capistrano с линией 'load 'deploy/assets''). Вид раздражает. –

-4

Я имел эту проблему, так как я использую codekit скомпилировать мой CoffeeScript.

Я обошел его, переименовав папку «активы/кофе» в «активы/кафе», поэтому рельс не нашел ее.

Редактировать: Что работает (и ТОЛЬКО для меня работает, приведенный выше ответ не работает) заключается в добавлении отдельной папки «Приложение/Кофе» и ее компиляции в папку assets/javascript , Если он находится в каталоге активов, рельсы найдут его независимо от имени.

+2

Черт, поцарапайте, что после перезапуска рельсов найдено активы/кафе и пытается скомпилировать его снова. – Kevin

-1

Примечание для Rails 4, или если вы используете «turbolinks», «uglifier» или любой другой камень, который требует, чтобы сервер интерпретировал javascript, прокомментируйте их также.

+6

Вы все еще можете захотеть использовать turbolinks или uglifier, даже если вы еще не используете CoffeeScript в своем исходном коде. –

27

Не уверен, если это имеет значение для Rails 3.1, но в 4 следует также установить javascript_engine к :js в application.rb проинструктировать генераторы создавать .js файлы вместо .js.coffee.

config.generators do |g| 
    # .. other configuration .. 
    g.javascript_engine :js 
end 
+6

Вы также можете сделать это на одной строке: 'config.generators.javascript_engine: js' – dotdotdotPaul

+3

Это больше не требуется в Rails 4.1. Достаточно просто удалить «gem coffee-rails» из Gemfile. – CodeSmith

+2

Это все еще необходимо даже в Rails 4.1, если у вас есть транзитивная зависимость от кофейных рельсов, таких как activeadmin –

1

У Koen и Gaurav Gupta есть хорошие ответы!

Если вы хотите сделать эти изменения автоматически для каждого нового проекта Rails, вы можете использовать файл шаблона.

В ~/rails-template.rb

# Don't install coffeescript 
gsub_file 'Gemfile', /^gem \'coffee-rails\'/ do 
    "\# gem 'coffee-rails'" 
end 

# Mess with generators to get the behavior we expect around new files 
# For these injections, indentation matters! 
inject_into_file 'config/application.rb', after: "class Application < Rails::Application\n" do 
    <<-'RUBY' 
    config.generators do |g| 
     # Always use .js files, never .coffee 
     g.javascript_engine :js 
    end 
    RUBY 
end 

Тогда в ~/.railsrc

-m ~/.rails-template.rb 

Теперь, когда вы запускаете rails new, то CoffeeScript камень будет закомментирована, и новые контроллеры будут использовать .js вместо .coffee.

Проверено на Rails 5.0.4, но я считаю, что он должен работать и для более ранних версий.


Как и в сторону, Rails templates и generators in general, супер мощный. Я преподаватель, и мои ученики, как правило, создают 15-20 проектов рельсов через курс, а также предоставляют им хороший файл шаблонов с отладочными драгоценными камнями, тестирование стиля спецификаций и т. Д. - это огромное время. Конечно, после того, как они внесли свои изменения, сами. Если вам интересно, мой персональный .rails-template.rb - on GitHub.

Смежные вопросы