2013-08-15 4 views
5

나는 Opal이 순수 Ruby 대 CoffeeScript 또는 JS를 사용하는 방식에서 제공하는 힘과 우아함에 흥미를 느꼈다.OpalRb with MeteorJS?

개발을위한 기본 언어로 Meteor를 위해 Opal을 활용하는 방법은 무엇입니까?

업데이트 : Ruby를 하단에서 상단으로 제공하는 동형 환경에서 실시간 요구 사항에 대해 Volt에 초점을 옮겼습니다. 환상적인 경험이었고 심지어 Matz has tweeted about it 몇 번이나되었습니다.

+0

Coffeescript는 OpalRb와 동일한 기능을 수행하는 것으로 보입니다. Javascript보다 오류가 발생하기 쉽고 Meteor가 지원됩니다. 왜 어려운 일을하는거야? –

+5

나는 그것이 장기적으로 볼 때, 일이 더 쉽고 유지할 수 있다고 믿기 때문에. CoffeeScript로 작업 해 왔기 때문에 Ruby는 CoffeeScript보다 뛰어 났으며 경험상 CS보다 훨씬 오류가 적습니다. 그것은 매우 보람있는 노력 인 것처럼 보이며 탐사의 가치가 있습니다. – ylluminate

+1

그러면 Meteor bundler에서 지원되는 것을 얻고 아마도 풀 요청을 제출해야합니다. coffeescript 컴파일러가 어떻게 설정되는지 모델을 따라갈 수 있습니다. –

답변

2

방금 ​​initial version을 발표했습니다.

이것은 Ruby 파일을 Javascript로 컴파일하지만 특정 유적 (아직)은 없습니다.

내가 어떤 시점에서 루비 클래스에 유성 포팅 계획, 늦게 보트에

+0

놀라워 좋은 소식! jquery (https://github.com/opal/opal-jquery)와 견고성이 비슷하거나 루비와 유사한 완전한 루비 유성을 가질 수 있다는 것은 정말 환상적입니다. – ylluminate

+0

이 패키지는 Meteor 0.9가 공식 패키지 시스템과 함께 출시 된 이후에는 더 이상 제공되지 않습니다. Marc-André의 업데이트 가능성? –

2

예, coffeescript 패키지가 Meteor에서 어떻게 구현되어 있는지 확인하여 .coffee.js으로 컴파일하십시오. 파일을 컴파일하고 소스 맵을 생성하는 스크립트 - 어떻게 JS 파일

  • https://github.com/meteor/meteor/blob/devel/packages/coffeescript/plugin/compile-coffeescript.js에 커피 스크립트 파일을 설정하는 유성을 알려줍니다 문서화되지 않은 _transitional_registerBuildPlugin 기능 - 특히,

    모든 것이 잘 설계된 경우 OpalRb 파일을 빌드하는 스마트 패키지를 만들기 위해 번들러를 만질 필요가 없을 것입니다. 그러나 패키지를 잘 활용하려면 bundler 영역에서 코어를 잡아 당기기 요청을 한 번 해고해야 할 것입니다. 현재 전처리 기는 모든 파일을 개별적으로 취급합니다. 귀하의 언어로는 가능하지 않을 수도 있습니다 (확실하지 않습니다). 그러나이 과정에서 다른 JS 방언과 컴파일러에 대한 Meteor의 지원을 향상시키는 데 기여하게 될 것입니다!

    필자는 JS 작성을위한 일종의 고수준 언어를 원한다면 Coffeescript가 이상적이라고 생각합니다. 특히 디버깅을 위해 브라우저 내 소스 맵을 지원하므로 이상적입니다.

  • 2

    어쩌면 조금 ... 더 나은 풀 요청을 제출할 조정 또는 유지 : 나는 유성에서 오팔을위한 빌드 플러그인을 썼다.
    은 자동으로 컴파일됩니다 당신은

    meteor add massimoronca:opal
    meteor add mikamai:opal

    .rb 또는 .js.rb로 끝나는 모든 파일을 사용하여 플러그인을 설치할 수있는 분위기 https://atmospherejs.com/massimoronca/opal https://atmospherejs.com/mikamai/opal

    에서 찾을 수 있습니다.

    당신은 당신이 요점 예제 Meteor 글로벌 개체에 대한 https://gist.github.com/wstucco/42392ee21b76dfa3ef83

    에서 작업을 수행하는 방법에 대한 작은 예를 찾을 수 있습니다 않는 것을 패키지를 출시 것까지, 유성 내장 객체를 래핑 할 것이다

    class Meteor 
        def self.server? 
        `Meteor.isServer` 
        end 
    
        def self.client? 
        `Meteor.isClient` 
        end 
    
        def self.cordova? 
        `Meteor.isCordova` 
        end 
    
        def self.startup(&block) 
        `#{block.call if block_given?}` 
        end 
    end 
    

    같은 오팔 래핑이 엉뚱한

    puts "Hello from server" if Meteor.server? 
    

    수정을 사용할 수있다 : 012 아래 플러그인 이동계정